[PATCH 1/1] STA: update scan results for ap_scan = 1 case also

Jouni Malinen j
Tue Aug 12 06:59:33 PDT 2014


On Wed, Aug 06, 2014 at 12:15:40PM +0530, Jithu Jance wrote:
> The commit 5cd4740580350371d77618ac037deef90b48d339 has rearranged
> the update scan results code and hence the IEs were not getting
> updated properly for ap_scan=1 case. This results in the 4 way
> handshake failure in the roaming case (IE mismatch in 3/4 EAPOL).
> 
> Please see whether the patch is fine.

Hmm.. This seems to move the wpa_s->current_bss update to happen before
wpa_supplicant_select_config() has a chance to confirm that the selected
BSS is acceptable. This does not look desirable.

What is the key difference for IE mismatch? Updating wpa_s->current_bss
or the call to wpa_supplicant_update_scan_results()? I'd assume it is
the latter. In either case, I'd expect something like this to be a safer
change:

diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 4e84f6e..db763a4 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -89,8 +89,20 @@ static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s)
 	struct wpa_bss *bss;
 	int res;
 
-	if (wpa_s->conf->ap_scan == 1 && wpa_s->current_ssid)
+	if (wpa_s->conf->ap_scan == 1 && wpa_s->current_ssid) {
+		bss = wpa_supplicant_get_new_bss(wpa_s, wpa_s->bssid);
+		if (!bss) {
+			wpa_supplicant_update_scan_results(wpa_s);
+
+			/* Get the BSS from the new scan results */
+			bss = wpa_supplicant_get_new_bss(wpa_s, wpa_s->bssid);
+		}
+
+		if (bss)
+			wpa_s->current_bss = bss;
+
 		return 0;
+	}
 
 	wpa_dbg(wpa_s, MSG_DEBUG, "Select network based on association "
 		"information");
 
-- 
Jouni Malinen                                            PGP id EFC895FA



More information about the Hostap mailing list