Clear BIGTK values from wpa_supplicant state machine when not needed

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: 2d4c78aef7 ("Configure received BIGTK on station/supplicant side")
Fixes: f15cc834cb ("MLD STA: Processing of EAPOL-Key msg 3/4 frame when using MLO")
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
This commit is contained in:
Veerendranath Jakkam 2023-09-04 01:06:41 +05:30 committed by Jouni Malinen
parent bae1ec693c
commit ba1579f3bf

View 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));
}
}