Browse Source

Fixed PBC overlap detection to handle case of missing UUID-E

UUID-E is not required to be present in Beacon frame, so we need to
accept scan results that do not have UUID-E as a valid PBC situation as
long as not more than one AP is in active PBC mode.
Jouni Malinen 16 years ago
parent
commit
44cd430f87
1 changed files with 2 additions and 14 deletions
  1. 2 14
      wpa_supplicant/wps_supplicant.c

+ 2 - 14
wpa_supplicant/wps_supplicant.c

@@ -569,12 +569,6 @@ int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
 		sel_uuid = wps_get_uuid_e(wps_ie);
 		sel_uuid = wps_get_uuid_e(wps_ie);
 	else
 	else
 		sel_uuid = NULL;
 		sel_uuid = NULL;
-	if (!sel_uuid) {
-		wpa_printf(MSG_DEBUG, "WPS: UUID-E not available for PBC "
-			   "overlap detection");
-		wpabuf_free(wps_ie);
-		return 1;
-	}
 
 
 	for (i = 0; i < wpa_s->scan_res->num; i++) {
 	for (i = 0; i < wpa_s->scan_res->num; i++) {
 		struct wpa_scan_res *bss = wpa_s->scan_res->res[i];
 		struct wpa_scan_res *bss = wpa_s->scan_res->res[i];
@@ -589,14 +583,8 @@ int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
 			continue;
 			continue;
 		}
 		}
 		uuid = wps_get_uuid_e(ie);
 		uuid = wps_get_uuid_e(ie);
-		if (uuid == NULL) {
-			wpa_printf(MSG_DEBUG, "WPS: UUID-E not available for "
-				   "PBC overlap detection (other BSS)");
-			ret = 1;
-			wpabuf_free(ie);
-			break;
-		}
-		if (os_memcmp(sel_uuid, uuid, 16) != 0) {
+		if (sel_uuid == NULL || uuid == NULL ||
+		    os_memcmp(sel_uuid, uuid, 16) != 0) {
 			ret = 1; /* PBC overlap */
 			ret = 1; /* PBC overlap */
 			wpabuf_free(ie);
 			wpabuf_free(ie);
 			break;
 			break;