meta-digi/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/murata/0020-SAE-Drop-PMKSA-cache-a...

47 lines
1.4 KiB
Diff

From ec86cadea38b22595003865c62b5321d55831d9e Mon Sep 17 00:00:00 2001
From: Kurt Lee <kurt.lee@cypress.com>
Date: Thu, 24 Feb 2022 03:57:22 -0600
Subject: [PATCH 20/60] SAE: Drop PMKSA cache after receiving specific deauth
As a STA mode, when receiving deauth frame with reason code
WLAN_REASON_PREV_AUTH_NOT_VALID, it should drop its PMKSA cache.
Upstream-Status: Inappropriate [DEY specific]
---
wpa_supplicant/events.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index fe8dbd91d..bfd49ee43 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -4159,6 +4159,25 @@ static void wpas_event_disconnect(struct wpa_supplicant *wpa_s, const u8 *addr,
}
#endif /* CONFIG_P2P */
+#ifdef CONFIG_SAE
+ if (reason_code == WLAN_REASON_PREV_AUTH_NOT_VALID) {
+ const u8 *bssid = wpa_s->bssid;
+
+ if (is_zero_ether_addr(bssid))
+ bssid = wpa_s->pending_bssid;
+
+ if ((!is_zero_ether_addr(bssid) ||
+ (wpa_s->wpa_state >= WPA_AUTHENTICATING)) &&
+ wpa_s->current_ssid &&
+ wpa_key_mgmt_sae(wpa_s->current_ssid->key_mgmt)) {
+ wpa_dbg(wpa_s, MSG_DEBUG, "SAE: Drop PMKSA "
+ "cache entry");
+ wpa_sm_aborted_cached(wpa_s->wpa);
+ wpa_sm_pmksa_cache_flush(wpa_s->wpa,
+ wpa_s->current_ssid);
+ }
+ }
+#endif /* CONFIG_SAE */
wpa_supplicant_event_disassoc_finish(wpa_s, reason_code,
locally_generated);
}
--
2.17.1