diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c index 3cd898d327..4dfd9cc4a1 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c @@ -501,7 +501,10 @@ bool wpa_ap_remove(u8* bssid) return false; } os_memcpy(addr, sta->addr, ETH_ALEN); - eloop_register_timeout(0, 10000, ap_free_sta_timeout, hapd, addr); + if (eloop_register_timeout(0, 10000, ap_free_sta_timeout, hapd, addr) != 0) { + os_free(addr); + return false; + } } else #endif ap_free_sta(hapd, sta); diff --git a/components/wpa_supplicant/port/eloop.c b/components/wpa_supplicant/port/eloop.c index e4b28cd3a1..a5674d38e6 100644 --- a/components/wpa_supplicant/port/eloop.c +++ b/components/wpa_supplicant/port/eloop.c @@ -169,7 +169,7 @@ overflow: "ELOOP: Too long timeout (secs=%u usecs=%u) to ever happen - ignore it", secs, usecs); os_free(timeout); - return 0; + return -1; } #ifdef ELOOP_DEBUG @@ -526,6 +526,9 @@ void eloop_destroy(void) sec, usec, timeout->eloop_data, timeout->user_data, timeout->handler); #endif + if (timeout->handler) { + timeout->handler(timeout->eloop_data, timeout->user_data); + } eloop_remove_timeout(timeout); } if (eloop_data_lock) {