WNM: Clear BSS TM data if already associated with preferred candidate

Previously, wnm_deallocate_memory() was called only if we decided to
move to another BSS at the completion of an accepted BSS Transition
Management Request. This resulted in the candidate information being
left in effect for the following scan operation if we were already
associated with the preferred candidate. This could result in unexpected
behavior in the following connection attempt.

Fix this by clearing the candidate information even if we do not need to
roam to another BSS.

This was triggered with mac80211_hwsim test cases in this sequence:
wnm_bss_tm ap_track_sta_force_2ghz

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2015-11-01 20:09:11 +02:00
parent f2d789f20b
commit 1e74ae4de9

View file

@ -639,6 +639,7 @@ int wnm_scan_process(struct wpa_supplicant *wpa_s, int reply_on_fail)
if (bss == wpa_s->current_bss) { if (bss == wpa_s->current_bss) {
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
"WNM: Already associated with the preferred candidate"); "WNM: Already associated with the preferred candidate");
wnm_deallocate_memory(wpa_s);
return 1; return 1;
} }