MLD: Ensure link BSSIDs remain on stack for ignore

When ignoring a link BSSID the multi-link information was parsed out
into a struct ml_sta_link_info on the stack. However, this stack
variable went out of scope before it was used by passing the link_bssids
pointer array to another function.

Fixes: 5af986c75a ("MLD: Also mark links as failed after association failure")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
This commit is contained in:
Benjamin Berg 2024-06-14 10:13:42 +02:00 committed by Jouni Malinen
parent 9f0429c9e1
commit cf3883f3d1

View file

@ -5636,6 +5636,7 @@ static void wpas_event_assoc_reject(struct wpa_supplicant *wpa_s,
{ {
const u8 *bssid = data->assoc_reject.bssid; const u8 *bssid = data->assoc_reject.bssid;
struct ieee802_11_elems elems; struct ieee802_11_elems elems;
struct ml_sta_link_info ml_info[MAX_NUM_MLD_LINKS];
const u8 *link_bssids[MAX_NUM_MLD_LINKS]; const u8 *link_bssids[MAX_NUM_MLD_LINKS];
#ifdef CONFIG_MBO #ifdef CONFIG_MBO
struct wpa_bss *reject_bss; struct wpa_bss *reject_bss;
@ -5768,7 +5769,6 @@ static void wpas_event_assoc_reject(struct wpa_supplicant *wpa_s,
if (ieee802_11_parse_elems(data->assoc_reject.resp_ies, if (ieee802_11_parse_elems(data->assoc_reject.resp_ies,
data->assoc_reject.resp_ies_len, data->assoc_reject.resp_ies_len,
&elems, 1) != ParseFailed) { &elems, 1) != ParseFailed) {
struct ml_sta_link_info ml_info[MAX_NUM_MLD_LINKS];
unsigned int n_links, i, idx; unsigned int n_links, i, idx;
idx = 0; idx = 0;