Просмотр исходного кода

Merge branch 'bugfix/flush_pmk_for_akm_change' into 'master'

esp_wifi: Flush PMK caching if bss akm has changed

Closes WIFI-5014

See merge request espressif/esp-idf!21179
Jiang Jiang Jian 3 лет назад
Родитель
Сommit
22f8bcdc27
1 измененных файлов с 9 добавлено и 2 удалено
  1. 9 2
      components/wpa_supplicant/src/rsn_supp/wpa.c

+ 9 - 2
components/wpa_supplicant/src/rsn_supp/wpa.c

@@ -2320,8 +2320,15 @@ int wpa_set_bss(char *macddr, char * bssid, u8 pairwise_cipher, u8 group_cipher,
         sm->key_mgmt == WPA_KEY_MGMT_OWE ||
         is_wpa2_enterprise_connection()) {
         if (!esp_wifi_skip_supp_pmkcaching() && use_pmk_cache) {
-            pmksa_cache_set_current(sm, NULL, (const u8*) bssid, 0, 0);
-            wpa_sm_set_pmk_from_pmksa(sm);
+            if (pmksa_cache_set_current(sm, NULL, (const u8*) bssid, 0, 0) == 0) {
+                struct rsn_pmksa_cache_entry *pmksa = pmksa_cache_get_current(sm);
+                if (pmksa && (pmksa->akmp != sm->key_mgmt)) {
+                    pmksa_cache_clear_current(sm);
+                    pmksa_cache_flush(sm->pmksa, NULL, pmksa->pmk, pmksa->pmk_len);
+                }
+            } else {
+                wpa_sm_set_pmk_from_pmksa(sm);
+            }
         } else {
             struct rsn_pmksa_cache_entry *entry = NULL;