forked from espressif/esp-idf
fix(wifi): Fix issue of supplicant using wrong parameters to configure bss
- Ensure that wpa_supplicant's state machine registers the requirement for rsnxe before deciding to add rsnxe to a assoc request. Co-authored-by: jgujarathi <jash.gujarathi@espressif.com>
This commit is contained in:
Submodule components/esp_wifi/lib updated: eacd07f165...73ed5e75a6
@@ -142,7 +142,6 @@ struct wpa_funcs {
|
|||||||
void (*wpa_config_done)(void);
|
void (*wpa_config_done)(void);
|
||||||
uint8_t *(*owe_build_dhie)(uint16_t group);
|
uint8_t *(*owe_build_dhie)(uint16_t group);
|
||||||
int (*owe_process_assoc_resp)(const u8 *rsn_ie, size_t rsn_len, const uint8_t *dh_ie, size_t dh_len);
|
int (*owe_process_assoc_resp)(const u8 *rsn_ie, size_t rsn_len, const uint8_t *dh_ie, size_t dh_len);
|
||||||
int (*wpa_sta_set_ap_rsnxe)(const u8 *rsnxe, size_t rsnxe_ie_len);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wpa2_funcs {
|
struct wpa2_funcs {
|
||||||
|
@@ -469,7 +469,6 @@ int esp_supplicant_init(void)
|
|||||||
wpa_cb->wpa_config_bss = NULL;//wpa_config_bss;
|
wpa_cb->wpa_config_bss = NULL;//wpa_config_bss;
|
||||||
wpa_cb->wpa_michael_mic_failure = wpa_michael_mic_failure;
|
wpa_cb->wpa_michael_mic_failure = wpa_michael_mic_failure;
|
||||||
wpa_cb->wpa_config_done = wpa_config_done;
|
wpa_cb->wpa_config_done = wpa_config_done;
|
||||||
wpa_cb->wpa_sta_set_ap_rsnxe = wpa_sm_set_ap_rsnxe;
|
|
||||||
|
|
||||||
esp_wifi_register_wpa3_ap_cb(wpa_cb);
|
esp_wifi_register_wpa3_ap_cb(wpa_cb);
|
||||||
esp_wifi_register_wpa3_cb(wpa_cb);
|
esp_wifi_register_wpa3_cb(wpa_cb);
|
||||||
|
@@ -2434,6 +2434,11 @@ int wpa_set_bss(char *macddr, char * bssid, u8 pairwise_cipher, u8 group_cipher,
|
|||||||
if (res < 0)
|
if (res < 0)
|
||||||
return -1;
|
return -1;
|
||||||
sm->assoc_wpa_ie_len = res;
|
sm->assoc_wpa_ie_len = res;
|
||||||
|
|
||||||
|
const u8 *rsnxe;
|
||||||
|
rsnxe = esp_wifi_sta_get_rsnxe((u8*)bssid);
|
||||||
|
wpa_sm_set_ap_rsnxe(rsnxe, rsnxe ? (rsnxe[1] + 2) : 0);
|
||||||
|
|
||||||
res = wpa_gen_rsnxe(sm, assoc_rsnxe, assoc_rsnxe_len);
|
res = wpa_gen_rsnxe(sm, assoc_rsnxe, assoc_rsnxe_len);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user