Kaynağa Gözat

Merge branch 'bugfix/wpa3_softap_assoc_reject' into 'master'

fix(wifi): wpa3 softap fix deauth when assoc req recv before sae is finished

Closes WIFIBUG-95

See merge request espressif/esp-idf!25545
Jiang Jiang Jian 2 yıl önce
ebeveyn
işleme
15f62f87ed

+ 1 - 1
components/esp_wifi/lib

@@ -1 +1 @@
-Subproject commit ee1f0c43328754e64f43803fc532faaba489d3f4
+Subproject commit fbe999ab688618498ee98b1569c23ed11c8889ce

+ 5 - 5
components/wpa_supplicant/esp_supplicant/src/esp_wpa_main.c

@@ -321,12 +321,15 @@ static bool hostap_sta_join(void **sta, u8 *bssid, u8 *wpa_ie, u8 wpa_ie_len,u8
     sta_info = ap_sta_add(hapd, bssid);
     if (!sta_info) {
         wpa_printf(MSG_ERROR, "failed to add station " MACSTR, MAC2STR(bssid));
-        return false;
+        goto fail;
     }
 
 #ifdef CONFIG_SAE
     if (sta_info->lock && os_semphr_take(sta_info->lock, 0) != TRUE) {
         wpa_printf(MSG_INFO, "Ignore assoc request as softap is busy with sae calculation for station "MACSTR, MAC2STR(bssid));
+        if (esp_send_assoc_resp(hapd, sta_info, bssid, WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY, rsnxe ? false : true, subtype) != WLAN_STATUS_SUCCESS) {
+            goto fail;
+        }
         return false;
     }
 #endif /* CONFIG_SAE */
@@ -357,10 +360,7 @@ static bool hostap_sta_join(void **sta, u8 *bssid, u8 *wpa_ie, u8 wpa_ie_len,u8
     }
 
 fail:
-    if (sta_info) {
-        ap_free_sta(hapd, sta_info);
-    }
-
+    esp_wifi_ap_deauth_internal(bssid, WLAN_REASON_PREV_AUTH_NOT_VALID);
     return false;
 }
 #endif