[PATCH] hostapd: hostapd_cleanup_iface_partial: fix hw_features use after free
Petr Štetiar
ynezz at true.cz
Tue Dec 17 23:50:18 PST 2024
From: Petr Štetiar <petr.stetiar at prplfoundation.org>
Currently when the iface is being cleaned up, the
hostapd_free_hw_features() is called which frees the underlying
hw_features and the struct is being NULLed, but the num_hw_features
counter is not being reset, thus following commonly used access
constructs:
for (i = 0; i < iface->num_hw_features; i++)
acs_cleanup_mode(&iface->hw_features[i]);
This might then lead to use after free and hostapd for example might
crash during configuration reload on disabled interfaces:
$ hostapd -ddt /tmp/wlan2_hapd.conf &
$ hostapd_cli -i wlan2 raw DISABLE
Fri Oct 4 20:44:04 2024 1728074644.706408: wlan2: AP-DISABLED
$ kill -SIGHUP $(pidof hostapd)
Segmentation fault (core dumped) hostapd -ddt /tmp/wlan2_hapd.conf
So lets fix it by resetting the num_hw_features counter to 0, so the
code will not try to access the freed memory in hw_features struct.
Reported-by: Mohammed SI ALI <mohammed.siali at softathome.com>
Tested-by: Houssem Dafdouf <houssem.dafdouf_ext at softathome.com>
Signed-off-by: Petr Štetiar <ynezz at true.cz>
Signed-off-by: Petr Štetiar <petr.stetiar at prplfoundation.org>
---
src/ap/hostapd.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index 9dfc21e00f3e..f3945f868f5e 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -710,6 +710,7 @@ void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
acs_cleanup(iface);
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
iface->hw_features = NULL;
+ iface->num_hw_features = 0;
iface->current_mode = NULL;
os_free(iface->current_rates);
iface->current_rates = NULL;
More information about the Hostap
mailing list