wpa_supplicant: Restore permanent MAC address on reassociation

With mac_addr=0 and preassoc_mac_addr=1, the permanent MAC address
should be restored for association. Previously this did not happen when
reassociating to the same ESS.

Signed-off-by: Benjamin Richter <br@waldteufel.eu>
This commit is contained in:
Benjamin Richter 2016-10-11 05:57:38 +02:00 committed by Jouni Malinen
parent e3e2fe3a42
commit 5d30f927ea

View file

@ -1691,11 +1691,13 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
wmm_ac_save_tspecs(wpa_s); wmm_ac_save_tspecs(wpa_s);
wpa_s->reassoc_same_bss = 1; wpa_s->reassoc_same_bss = 1;
} }
} else if (rand_style > 0) { }
if (rand_style > 0 && !wpa_s->reassoc_same_ess) {
if (wpas_update_random_addr(wpa_s, rand_style) < 0) if (wpas_update_random_addr(wpa_s, rand_style) < 0)
return; return;
wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid);
} else if (wpa_s->mac_addr_changed) { } else if (rand_style == 0 && wpa_s->mac_addr_changed) {
if (wpa_drv_set_mac_addr(wpa_s, NULL) < 0) { if (wpa_drv_set_mac_addr(wpa_s, NULL) < 0) {
wpa_msg(wpa_s, MSG_INFO, wpa_msg(wpa_s, MSG_INFO,
"Could not restore permanent MAC address"); "Could not restore permanent MAC address");