hostapd: fix a segfault on sta disconnect with proxy arp enabled
authorFelix Fietkau <nbd@nbd.name>
Wed, 28 Jul 2021 03:48:38 +0000 (05:48 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 28 Jul 2021 03:55:11 +0000 (05:55 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/network/services/hostapd/patches/023-ndisc_snoop-call-dl_list_del-before-freeing-ipv6-add.patch [new file with mode: 0644]

diff --git a/package/network/services/hostapd/patches/023-ndisc_snoop-call-dl_list_del-before-freeing-ipv6-add.patch b/package/network/services/hostapd/patches/023-ndisc_snoop-call-dl_list_del-before-freeing-ipv6-add.patch
new file mode 100644 (file)
index 0000000..9ff9b23
--- /dev/null
@@ -0,0 +1,19 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Wed, 28 Jul 2021 05:43:29 +0200
+Subject: [PATCH] ndisc_snoop: call dl_list_del before freeing ipv6 addresses
+
+Fixes a segmentation fault on sta disconnect
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/src/ap/ndisc_snoop.c
++++ b/src/ap/ndisc_snoop.c
+@@ -61,6 +61,7 @@ void sta_ip6addr_del(struct hostapd_data
+       dl_list_for_each_safe(ip6addr, prev, &sta->ip6addr, struct ip6addr,
+                             list) {
+               hostapd_drv_br_delete_ip_neigh(hapd, 6, (u8 *) &ip6addr->addr);
++              dl_list_del(&ip6addr->list);
+               os_free(ip6addr);
+       }
+ }