From: Felix Fietkau Date: Tue, 21 Nov 2023 05:45:09 +0000 (+0100) Subject: interface: fix interface memory corruption X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=refs%2Fheads%2Fopenwrt-23.05;p=project%2Fmdnsd.git interface: fix interface memory corruption - set vlist keep_old=true, because the iface_update_cb expects it - update ifindex on reload Fixes: openwrt/openwrt/issues/14120 Signed-off-by: Felix Fietkau (cherry picked from commit 9040335e102b83a2dd7df64aa88d0dd762d78a86) --- 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);