diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index bf369d73b14..a19b4b4a936 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit bf369d73b14a157d391da483d841651f14d09abe +Subproject commit a19b4b4a93611122058ab3e113ba1d9814a41d27 diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_dpp.c b/components/wpa_supplicant/esp_supplicant/src/esp_dpp.c index 73ea2840662..c2f9ae50410 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_dpp.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_dpp.c @@ -395,7 +395,12 @@ static int esp_dpp_rx_auth_conf(struct action_rx_param *rx_param, uint8_t *dpp_d if (os_memcmp(rx_param->sa, auth->peer_mac_addr, ETH_ALEN) != 0) { wpa_printf(MSG_DEBUG, "DPP: MAC address mismatch (expected " MACSTR ") - drop", MAC2STR(auth->peer_mac_addr)); - return ESP_ERR_DPP_FAILURE; + return ESP_OK; + } + + if (auth->auth_success || !auth->waiting_auth_conf) { + wpa_printf(MSG_DEBUG, "DPP: Not waiting for Auth Confirm - drop"); + return ESP_OK; } eloop_cancel_timeout(esp_dpp_auth_conf_wait_timeout, NULL, NULL); @@ -438,6 +443,11 @@ static esp_err_t esp_dpp_rx_peer_disc_resp(struct action_rx_param *rx_param) return ESP_ERR_INVALID_ARG; } + if (!auth) { + wpa_printf(MSG_DEBUG, "DPP: No DPP Authentication in progress - drop"); + return ESP_OK; + } + if (rx_param->vendor_data_len < 2) { wpa_printf(MSG_INFO, "DPP: Too short vendor specific data"); return ESP_FAIL; diff --git a/components/wpa_supplicant/src/common/dpp.c b/components/wpa_supplicant/src/common/dpp.c index 678d6837751..e41a0bd51bf 100644 --- a/components/wpa_supplicant/src/common/dpp.c +++ b/components/wpa_supplicant/src/common/dpp.c @@ -2688,6 +2688,12 @@ int dpp_auth_conf_rx(struct dpp_authentication *auth, const u8 *hdr, return -1; } + if (!auth->waiting_auth_conf) { + wpa_printf(MSG_DEBUG, + "DPP: Not waiting for Auth Confirm - drop"); + return -1; + } + auth->waiting_auth_conf = 0; wrapped_data = dpp_get_attr(attr_start, attr_len, DPP_ATTR_WRAPPED_DATA,