Browse Source

WPS: Require PBC match with wps_pbc that specifies BSSID

The WPS mode was already verified when the AP was configured for
WPA/WPA2, but this was not done with AP that was in open mode.
Fix this by allowing wpa_supplicant_ssid_bss_match() to be called
in non-WPA configuration, too. With this change, wps_pbc BSSID
command will wait until the specified target AP is in active PBC
mode before trying to connect to it.
Jouni Malinen 14 years ago
parent
commit
cc5e390d28
1 changed files with 7 additions and 3 deletions
  1. 7 3
      wpa_supplicant/events.c

+ 7 - 3
wpa_supplicant/events.c

@@ -420,10 +420,14 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s,
 		return 1;
 	}
 
-	if (proto_match == 0)
+	if ((ssid->proto & (WPA_PROTO_WPA | WPA_PROTO_RSN)) &&
+	    proto_match == 0) {
 		wpa_printf(MSG_DEBUG, "   skip - no WPA/RSN proto match");
+		return 0;
+	}
 
-	return 0;
+	/* Allow in non-WPA configuration */
+	return 1;
 }
 
 
@@ -539,7 +543,7 @@ static struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
 			continue;
 		}
 
-		if (wpa && !wpa_supplicant_ssid_bss_match(wpa_s, ssid, bss))
+		if (!wpa_supplicant_ssid_bss_match(wpa_s, ssid, bss))
 			continue;
 
 		if (!wpa &&