diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c index 0c27f7ac38..f505f33b18 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c @@ -351,7 +351,7 @@ is_wps_pbc_overlap(struct wps_sm *sm, const u8 *sel_uuid) { if (!sel_uuid) { wpa_printf(MSG_DEBUG, "WPS: null uuid field"); - return false; + return true; } if (os_memcmp(sel_uuid, sm->uuid_r, WPS_UUID_LEN) != 0) { @@ -372,7 +372,7 @@ wps_parse_scan_result(struct wps_scan_ie *scan) struct wps_sm *sm = gWpsSm; wifi_mode_t op_mode = 0; - if(sm->wps_pbc_overlap) { + if (sm->wps_pbc_overlap) { return false; } @@ -447,11 +447,13 @@ wps_parse_scan_result(struct wps_scan_ie *scan) os_memcpy(sm->bssid, scan->bssid, ETH_ALEN); scan_uuid = wps_get_uuid_e(buf); + if (sm->discover_ssid_cnt > 1 && wps_get_type() == WPS_TYPE_PBC && is_wps_pbc_overlap(sm, scan_uuid) == true) { + wpa_printf(MSG_INFO, "pbc_overlap flag is true"); + sm->wps_pbc_overlap = true; + wpabuf_free(buf); + return false; + } if (scan_uuid) { - if (sm->discover_ssid_cnt > 1 && wps_get_type() == WPS_TYPE_PBC && is_wps_pbc_overlap(sm, scan_uuid) == true) { - wpa_printf(MSG_INFO, "pbc_overlap flag is true"); - sm->wps_pbc_overlap = true; - } os_memcpy(sm->uuid_r, scan_uuid, WPS_UUID_LEN); }