fix use-after-free on config reload
authorFelix Fietkau <nbd@openwrt.org>
Sun, 4 Dec 2011 19:07:02 +0000 (20:07 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 4 Dec 2011 19:07:02 +0000 (20:07 +0100)
config.c

index fcfea7c42c01000a7b83a5e836f949d0f5e7e2c1..8472d44f0ff9c9dcaa9e4d59699a45921cca8265 100644 (file)
--- a/config.c
+++ b/config.c
@@ -176,6 +176,14 @@ config_parse_interface(struct uci_section *s)
        memcpy(config, b.head, blob_pad_len(b.head));
        interface_add(iface, config);
 
+       /*
+        * need to look up the interface name again, in case of config update,
+        * the pointer will have changed
+        */
+       iface = vlist_find(&interfaces, s->e.name, iface, node);
+       if (!iface)
+               return;
+
        dev = iface->main_dev.dev;
        if (!dev || !dev->default_config)
                return;