diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c index 783ee6dea..cf13008a1 100644 --- a/src/ap/ieee802_11_auth.c +++ b/src/ap/ieee802_11_auth.c @@ -646,6 +646,6 @@ void hostapd_free_psk_list(struct hostapd_sta_wpa_psk_short *psk) while (psk) { struct hostapd_sta_wpa_psk_short *prev = psk; psk = psk->next; - os_free(prev); + bin_clear_free(prev, sizeof(*prev)); } } diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c index 4f1c76b7b..aacfa3372 100644 --- a/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c @@ -1069,10 +1069,11 @@ static void hostapd_free_wps(struct wps_context *wps) for (i = 0; i < MAX_WPS_VENDOR_EXTENSIONS; i++) wpabuf_free(wps->dev.vendor_ext[i]); wps_device_data_free(&wps->dev); - os_free(wps->network_key); + bin_clear_free(wps->network_key, wps->network_key_len); hostapd_wps_nfc_clear(wps); wpabuf_free(wps->dh_pubkey); wpabuf_free(wps->dh_privkey); + forced_memzero(wps->psk, sizeof(wps->psk)); os_free(wps); } diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index ce44dfb9e..a996b436b 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -8825,7 +8825,7 @@ static void wpas_p2p_remove_client_go(struct wpa_supplicant *wpa_s, hapd->conf->ssid.wpa_psk = psk->next; rem = psk; psk = psk->next; - os_free(rem); + bin_clear_free(rem, sizeof(*rem)); } else { prev = psk; psk = psk->next;