PTKSA: Fix a potential hostapd memory leak during reconfiguration

Some of the reconfiguration cases (e.g., with WPS reconfiguration
enabling WPA/WPA2) might end up calling hostapd_setup_wpa() twice
without calling hostapd_deinit_wpa() in the middle. This would have
resulted in a memory leak since the PTKSA cache was being reinitialized
without freeing previous memory allocation.

Fix this by making PTKSA cachine initialization independent of
hapd->wpa_auth so that reinitialization does not happen in a manner that
would have overridden the old hapd->ptksa pointer without freeing the
referenced resources.

Fixes: f2f8e4f458 ("Add PTKSA cache to hostapd")
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
Jouni Malinen 2021-06-25 00:20:02 +03:00 committed by Jouni Malinen
parent 311091eb43
commit 84f8947735

View file

@ -1553,7 +1553,8 @@ int hostapd_setup_wpa(struct hostapd_data *hapd)
return -1; return -1;
} }
hapd->ptksa = ptksa_cache_init(); if (!hapd->ptksa)
hapd->ptksa = ptksa_cache_init();
if (!hapd->ptksa) { if (!hapd->ptksa) {
wpa_printf(MSG_ERROR, "Failed to allocate PTKSA cache"); wpa_printf(MSG_ERROR, "Failed to allocate PTKSA cache");
return -1; return -1;