Merge branch 'bugfix/action_bss_null_issue' into 'master'

wpa_supplicant: Fix error handling in DPP Action Rx

Closes WIFI-3412

See merge request espressif/esp-idf!12204
This commit is contained in:
Jiang Jiang Jian 2021-02-08 14:17:03 +08:00
commit 3c6c5b8a29
2 changed files with 16 additions and 3 deletions

@ -1 +1 @@
Subproject commit f0dd46645e38c3c3941aba13052be38f4eab4c2d
Subproject commit c813b4b14704132002d154298384c985c10a2b6d

View File

@ -407,22 +407,35 @@ int esp_supp_rx_action(uint8_t *hdr, uint8_t *payload, size_t len, uint8_t chann
{
struct ieee80211_hdr *rx_hdr = (struct ieee80211_hdr *)hdr;
struct action_rx_param *rx_param;
int ret = ESP_ERR_NOT_SUPPORTED;
if (WLAN_FC_GET_STYPE(rx_hdr->frame_control) == WLAN_FC_STYPE_ACTION) {
rx_param = os_zalloc(sizeof(struct action_rx_param));
if (!rx_param) {
wpa_printf(MSG_ERROR, "Failed to allocate memory for Rx Action");
return ESP_ERR_NO_MEM;
}
os_memcpy(rx_param->sa, rx_hdr->addr2, ETH_ALEN);
rx_param->channel = channel;
rx_param->action_frm = os_zalloc(len);
if (!rx_param->action_frm) {
wpa_printf(MSG_ERROR, "Failed to allocate memory for Rx Action");
os_free(rx_param);
return ESP_ERR_NO_MEM;
}
rx_param->frm_len = len;
os_memcpy(rx_param->action_frm, payload, len);
if (ESP_OK != esp_dpp_post_evt(SIG_DPP_RX_ACTION, (u32)rx_param)) {
ret = esp_dpp_post_evt(SIG_DPP_RX_ACTION, (u32)rx_param);
if (ESP_OK != ret) {
wpa_printf(MSG_ERROR, "Failed to post event to DPP Task(status=%d)", ret);
os_free(rx_param->action_frm);
os_free(rx_param);
return ret;
}
}
return ESP_ERR_NOT_SUPPORTED;
return ret;
}
static void offchan_event_handler(void *arg, esp_event_base_t event_base,