kopia lustrzana https://github.com/espressif/esp-idf
fix(wifi): allow some special igtk keyindx to workaround faulty APs
rodzic
8b473bee24
commit
24e208eca1
|
@ -988,37 +988,37 @@ int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
|
||||||
static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
|
static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
|
||||||
const wifi_wpa_igtk_t *igtk)
|
const wifi_wpa_igtk_t *igtk)
|
||||||
{
|
{
|
||||||
size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
|
size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
|
||||||
u16 keyidx = WPA_GET_LE16(igtk->keyid);
|
u16 keyidx = WPA_GET_LE16(igtk->keyid);
|
||||||
|
|
||||||
/* Detect possible key reinstallation */
|
/* Detect possible key reinstallation */
|
||||||
if (sm->igtk.igtk_len == len &&
|
if (sm->igtk.igtk_len == len &&
|
||||||
os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
|
os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
|
"WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
|
||||||
keyidx);
|
keyidx);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
|
"WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
|
||||||
keyidx, MAC2STR(igtk->pn));
|
keyidx, MAC2STR(igtk->pn));
|
||||||
wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
|
wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
|
||||||
if (keyidx > 4095) {
|
|
||||||
wpa_printf(MSG_WARNING,
|
|
||||||
"WPA: Invalid IGTK KeyID %d", keyidx);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (esp_wifi_set_igtk_internal(WIFI_IF_STA, igtk) < 0) {
|
|
||||||
wpa_printf(MSG_WARNING,
|
|
||||||
"WPA: Failed to configure IGTK to the driver");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sm->igtk.igtk_len = len;
|
if (esp_wifi_set_igtk_internal(WIFI_IF_STA, igtk) < 0) {
|
||||||
os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
|
if (keyidx > 4095) {
|
||||||
|
wpa_printf(MSG_WARNING,
|
||||||
|
"WPA: Invalid IGTK KeyID %d", keyidx);
|
||||||
|
}
|
||||||
|
wpa_printf(MSG_WARNING,
|
||||||
|
"WPA: Failed to configure IGTK to the driver");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
sm->igtk.igtk_len = len;
|
||||||
|
os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue