[PATCH] WPS: Exclude missing UUID-E from PBC overlap detection

Min Zhang mzhang
Thu May 14 15:02:42 PDT 2015

Missing UUID-E shouldn't result in PBC overlap. An AP selected as
PBC registrar can Beacon w/o UUID-E attr as not required, but only
include unique UUID-E in its Probe Resp. The Andriod PBC scan seemly
just uses Beacon, so the NULL uuid check results in a false overlap.

Also commit 44cd430f877a558744def067ab38c4f9e4b283fc "Fixed PBC
overlap detection to handle case of missing UUID-E" tried but still
ended up PBC overlap on missing UUID-E.

The patch effectively exclude Beacon Frame from PBC overlap
detection. It is inline with WPS PBC overlap spec that only mentioned
Probe not Beacon. Another way is let PBC scan uses Probe Resp so it
can extract the actual UUID-E to compare.

Note the WPS spec also only suggested Selected Registrar as PBC
overlap detection. Andriod added UUID-E matching on top which I think
it is better since it allows unrelated PBC overlap.

Signed-off-by: Min Zhang <mzhang at roku.com>
  wpa_supplicant/wps_supplicant.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/wpa_supplicant/wps_supplicant.c b/wpa_supplicant/wps_supplicant.c
index 40a5c69..a2162a4 100644
--- a/wpa_supplicant/wps_supplicant.c
+++ b/wpa_supplicant/wps_supplicant.c
@@ -1697,7 +1697,7 @@ int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
  		uuid = wps_get_uuid_e(ie);
  		wpa_hexdump(MSG_DEBUG, "WPS: UUID of the other BSS",
  			    uuid, UUID_LEN);
-		if (sel_uuid == NULL || uuid == NULL ||
+		if (sel_uuid != NULL && uuid != NULL &&
  		    os_memcmp(sel_uuid, uuid, UUID_LEN) != 0) {
  			ret = 1; /* PBC overlap */
  			wpa_msg(wpa_s, MSG_INFO, "WPS: PBC overlap detected: "

More information about the Hostap mailing list