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.
This commit is contained in:
Jouni Malinen 2008-12-21 17:28:01 +02:00
parent 723763cba0
commit 44cd430f87

View File

@ -569,12 +569,6 @@ int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
sel_uuid = wps_get_uuid_e(wps_ie);
else
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++) {
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;
}
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 */
wpabuf_free(ie);
break;