]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Clear BIGTK values from wpa_supplicant state machine when not needed
authorVeerendranath Jakkam <quic_vjakkam@quicinc.com>
Sun, 3 Sep 2023 19:36:41 +0000 (01:06 +0530)
committerJouni Malinen <j@w1.fi>
Tue, 5 Sep 2023 17:02:18 +0000 (20:02 +0300)
wpa_supplicant does not configure BIGTK(s) to the driver when the STA
reconnects to the same AP after disconnect due to not clearing the last
configured BIGTK values during disconnect. To avoid such issues clear
the BIGTK values while clearing PTK and other group keys.

Fixes: 2d4c78aef718 ("Configure received BIGTK on station/supplicant side")
Fixes: f15cc834cb77 ("MLD STA: Processing of EAPOL-Key msg 3/4 frame when using MLO")
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
src/rsn_supp/wpa.c

index 7294a15bc31a53629da3d86296cd21b2edba8d05..2867d60aff30e6f14e7a84daeac5fd368d1b789b 100644 (file)
@@ -4073,6 +4073,8 @@ static void wpa_sm_clear_ptk(struct wpa_sm *sm)
        os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
        os_memset(&sm->igtk, 0, sizeof(sm->igtk));
        os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
+       os_memset(&sm->bigtk, 0, sizeof(sm->bigtk));
+       os_memset(&sm->bigtk_wnm_sleep, 0, sizeof(sm->bigtk_wnm_sleep));
        sm->tk_set = false;
        for (i = 0; i < MAX_NUM_MLD_LINKS; i++) {
                os_memset(&sm->mlo.links[i].gtk, 0,
@@ -4083,6 +4085,10 @@ static void wpa_sm_clear_ptk(struct wpa_sm *sm)
                          sizeof(sm->mlo.links[i].igtk));
                os_memset(&sm->mlo.links[i].igtk_wnm_sleep, 0,
                          sizeof(sm->mlo.links[i].igtk_wnm_sleep));
+               os_memset(&sm->mlo.links[i].bigtk, 0,
+                         sizeof(sm->mlo.links[i].bigtk));
+               os_memset(&sm->mlo.links[i].bigtk_wnm_sleep, 0,
+                         sizeof(sm->mlo.links[i].bigtk_wnm_sleep));
        }
 }