[PATCH] Use SA Query for 4-way handshake timeout
James Herbert
james.herbert at morsemicro.com
Mon Sep 2 17:00:09 PDT 2024
When an AP fails to receive message 4 of the 4-way handshake, the station has
completed association but the AP has not. The AP sends an unprotected deauth
frame to the station with a reason code of WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT,
but the station's WPA state is WPA_COMPLETED so it ignores unprotected deauth
frames that do not have a reason code of
WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA or
WLAN_REASON_CLASS3_FRAME_FROM_NONAUTH_STA. The station becomes stuck in an
invalid state.
Add WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT to the list of reason codes for deauth
frames that can be verified by using SA Query.
Signed-off-by: James Herbert <james.herbert at morsemicro.com>
---
wpa_supplicant/sme.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index 9b083cddd..6a335b5cb 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -3497,7 +3497,8 @@ void sme_event_unprot_disconnect(struct wpa_supplicant *wpa_s, const u8 *sa,
if (!ether_addr_equal(sa, wpa_s->bssid))
return;
if (reason_code != WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA &&
- reason_code != WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA)
+ reason_code != WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA &&
+ reason_code != WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT)
return;
if (wpa_s->sme.sa_query_count > 0)
return;
--
2.25.1
More information about the Hostap
mailing list