mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
Merge branch 'bugfix/analyzer_issues_supplicant_v5.0' into 'release/v5.0'
fix(esp_wifi): fix some analyzer issues (v5.0) See merge request espressif/esp-idf!36834
This commit is contained in:
commit
a3136838fa
@ -187,21 +187,9 @@ static bool is_wpa2_enterprise_connection(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* get_bssid - Get the current BSSID
|
||||
* @priv: private driver interface data
|
||||
* @bssid: buffer for BSSID (ETH_ALEN = 6 bytes)
|
||||
*
|
||||
* Returns: 0 on success, -1 on failure
|
||||
*
|
||||
* Query kernel driver for the current BSSID and copy it to bssid.
|
||||
* Setting bssid to 00:00:00:00:00:00 is recommended if the STA is not
|
||||
* associated.
|
||||
*/
|
||||
static inline int wpa_sm_get_bssid(struct wpa_sm *sm, u8 *bssid)
|
||||
const u8 * wpa_sm_get_auth_addr(struct wpa_sm *sm)
|
||||
{
|
||||
memcpy(bssid, sm->bssid, ETH_ALEN);
|
||||
return 0;
|
||||
return sm->bssid;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -231,11 +219,14 @@ static inline int wpa_sm_ether_send(struct wpa_sm *sm, const u8 *dest, u16 proto
|
||||
* @msg_len: Length of message
|
||||
* @key_mic: Pointer to the buffer to which the EAPOL-Key MIC is written
|
||||
*/
|
||||
void wpa_eapol_key_send(struct wpa_sm *sm, const u8 *kck, size_t kck_len,
|
||||
int wpa_eapol_key_send(struct wpa_sm *sm, const u8 *kck, size_t kck_len,
|
||||
int ver, const u8 *dest, u16 proto,
|
||||
u8 *msg, size_t msg_len, u8 *key_mic)
|
||||
{
|
||||
|
||||
int ret = -1;
|
||||
if (is_zero_ether_addr(dest) && is_zero_ether_addr(sm->bssid)) {
|
||||
#ifndef ESP_SUPPLICANT
|
||||
/*
|
||||
* Association event was not yet received; try to fetch
|
||||
* BSSID from the driver.
|
||||
@ -253,6 +244,9 @@ void wpa_eapol_key_send(struct wpa_sm *sm, const u8 *kck, size_t kck_len,
|
||||
MAC2STR(dest));
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
if (key_mic &&
|
||||
wpa_eapol_key_mic(kck, kck_len, sm->key_mgmt, ver, msg, msg_len,
|
||||
@ -267,9 +261,9 @@ void wpa_eapol_key_send(struct wpa_sm *sm, const u8 *kck, size_t kck_len,
|
||||
wpa_hexdump_key(MSG_DEBUG, "WPA: KCK", kck, kck_len);
|
||||
wpa_hexdump(MSG_DEBUG, "WPA: Derived Key MIC", key_mic, wpa_mic_len(sm->key_mgmt, sm->pmk_len));
|
||||
wpa_hexdump(MSG_MSGDUMP, "WPA: TX EAPOL-Key", msg, msg_len);
|
||||
wpa_sm_ether_send(sm, dest, proto, msg, msg_len);
|
||||
return wpa_sm_ether_send(sm, dest, proto, msg, msg_len);
|
||||
out:
|
||||
return;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -288,7 +282,7 @@ static void wpa_sm_key_request(struct wpa_sm *sm, int error, int pairwise)
|
||||
struct wpa_eapol_key *reply;
|
||||
struct wpa_eapol_key_192 *reply192;
|
||||
int key_info, ver;
|
||||
u8 bssid[ETH_ALEN], *rbuf, *key_mic;
|
||||
u8 *rbuf, *key_mic;
|
||||
|
||||
if (sm->key_mgmt == WPA_KEY_MGMT_OSEN || wpa_key_mgmt_suite_b(sm->key_mgmt))
|
||||
ver = WPA_KEY_INFO_TYPE_AKM_DEFINED;
|
||||
@ -301,12 +295,6 @@ static void wpa_sm_key_request(struct wpa_sm *sm, int error, int pairwise)
|
||||
else
|
||||
ver = WPA_KEY_INFO_TYPE_HMAC_MD5_RC4;
|
||||
|
||||
if (wpa_sm_get_bssid(sm, bssid) < 0) {
|
||||
wpa_printf(MSG_DEBUG, "Failed to read BSSID for EAPOL-Key "
|
||||
"request");
|
||||
return;
|
||||
}
|
||||
|
||||
mic_len = wpa_mic_len(sm->key_mgmt, sm->pmk_len);
|
||||
hdrlen = mic_len == 24 ? sizeof(*reply192) : sizeof(*reply);
|
||||
rbuf = wpa_sm_alloc_eapol(sm, IEEE802_1X_TYPE_EAPOL_KEY, NULL,
|
||||
@ -348,7 +336,7 @@ static void wpa_sm_key_request(struct wpa_sm *sm, int error, int pairwise)
|
||||
wpa_printf(MSG_DEBUG, "WPA: Sending EAPOL-Key Request (error=%d "
|
||||
"pairwise=%d ptk_set=%d len=%lu)",
|
||||
error, pairwise, sm->ptk_set, (unsigned long) rlen);
|
||||
wpa_eapol_key_send(sm, sm->ptk.kck, sm->ptk.kck_len, ver, bssid,
|
||||
wpa_eapol_key_send(sm, sm->ptk.kck, sm->ptk.kck_len, ver, wpa_sm_get_auth_addr(sm),
|
||||
ETH_P_EAPOL, rbuf, rlen, key_mic);
|
||||
wpa_sm_free_eapol(rbuf);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user