summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2023-11-21 05:45:09 +0000
committerFelix Fietkau2023-11-21 05:48:33 +0000
commit9040335e102b83a2dd7df64aa88d0dd762d78a86 (patch)
tree59784a6e268f497291813d8ada81083f302d9c4b
parentd45c443aa1e6514aab58bbbf9311913e484d31a6 (diff)
downloadmdnsd-9040335e102b83a2dd7df64aa88d0dd762d78a86.tar.gz
interface: fix interface memory corruption
- set vlist keep_old=true, because the iface_update_cb expects it - update ifindex on reload Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--interface.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/interface.c b/interface.c
index e98edde..5b1591c 100644
--- a/interface.c
+++ b/interface.c
@@ -464,6 +464,7 @@ iface_update_cb(struct vlist_tree *tree, struct vlist_node *node_new,
cache_cleanup(if_old);
free(if_old->addrs.v4);
if_old->addrs = if_new->addrs;
+ if_old->ifindex = if_new->ifindex;
free(if_new);
return;
}
@@ -669,4 +670,4 @@ struct interface *interface_get(const char *name, enum umdns_socket_type type)
return iface;
}
-VLIST_TREE(interfaces, avl_strcmp, iface_update_cb, false, false);
+VLIST_TREE(interfaces, avl_strcmp, iface_update_cb, true, false);