aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/src
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2023-09-12 13:32:40 +0200
committerFelix Fietkau <nbd@nbd.name>2023-09-12 14:09:58 +0200
commitea1787b7bcf537ffddad9aae3aab8381942c24cc (patch)
tree7fa171787523b7583b5b174e5d888289cdb67cd5 /package/network/services/hostapd/src
parent36a9f8449c8c892dada8d313af4fcfc38a1ba08b (diff)
downloadupstream-ea1787b7bcf537ffddad9aae3aab8381942c24cc.tar.gz
upstream-ea1787b7bcf537ffddad9aae3aab8381942c24cc.tar.bz2
upstream-ea1787b7bcf537ffddad9aae3aab8381942c24cc.zip
hostapd: clear ucode interface/bss resource pointers
Avoids potential use-after-free bugs Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/network/services/hostapd/src')
-rw-r--r--package/network/services/hostapd/src/src/utils/ucode.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/package/network/services/hostapd/src/src/utils/ucode.c b/package/network/services/hostapd/src/src/utils/ucode.c
index 896ef46e1f6..2beeb9a7ff6 100644
--- a/package/network/services/hostapd/src/src/utils/ucode.c
+++ b/package/network/services/hostapd/src/src/utils/ucode.c
@@ -298,9 +298,15 @@ uc_value_t *wpa_ucode_registry_get(uc_value_t *reg, int idx)
uc_value_t *wpa_ucode_registry_remove(uc_value_t *reg, int idx)
{
uc_value_t *val = wpa_ucode_registry_get(reg, idx);
+ void **dataptr;
- if (val)
- ucv_array_set(reg, idx - 1, NULL);
+ if (!val)
+ return NULL;
+
+ ucv_array_set(reg, idx - 1, NULL);
+ dataptr = ucv_resource_dataptr(val, NULL);
+ if (dataptr)
+ *dataptr = NULL;
return val;
}