mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-04 02:50:58 +02:00
When a WPS handshake is already in progress and the enrollee sends another EAPOL-Start (e.g., due to missed packets or timeout), the registrar resets its state by calling 'eap_wsc_reset()'. This function frees 'sm->eap_method_priv' and then calls 'esp_wifi_ap_wps_disable()', which internally triggers another call to 'eap_wsc_reset()'. This results in a double reset where the second invocation accesses the already freed 'sm->eap_method_priv', leading to a crash. This fix sets 'sm->eap_method_priv' to NULL immediately after freeing it to ensure any subsequent calls to eap_wsc_reset() do not access an invalid pointer.
'wpa_supplicant'
This component contains the upstream wpa_supplicant ported for ESP family of platforms. The code is tightly coupled with esp_wifi component which has ESP WiFi libraries and header files that are used in ported supplicant.
ESP uses MbedTLS as crypto library therefore MbedTLS component is also required for some features to work(see ESP_WIFI_MBEDTLS_CRYPTO).
To port it for different OS, esp_wifi and wpa_supplicant should be picked up a whole system(preferably with MbedTLS if we want all features to work.)