]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
BSD: fix segfault when on carrier when IPv6 addresses are present
authorRoy Marples <roy@marples.name>
Tue, 27 Mar 2018 22:06:30 +0000 (23:06 +0100)
committerRoy Marples <roy@marples.name>
Tue, 27 Mar 2018 22:06:30 +0000 (23:06 +0100)
This doesn't affect NetBSD.

src/dhcpcd.c

index 8b35ee59a70cdfb3bc1cfe8c581aab5793c5cf15..23ca18701182409fa5f122c9639807da1da427a4 100644 (file)
@@ -995,6 +995,7 @@ dhcpcd_handleinterface(void *arg, int action, const char *ifname)
        }
        /* Check if we already have the interface */
        iff = if_find(ctx->ifaces, ifp->name);
+
        if (iff != NULL) {
                if (iff->active)
                        logdebugx("%s: interface updated", iff->name);
@@ -1013,9 +1014,12 @@ dhcpcd_handleinterface(void *arg, int action, const char *ifname)
                }
                iff = ifp;
        }
-       if_learnaddrs(ctx, ifs, &ifaddrs);
-       if (action > 0 && iff->active)
-               dhcpcd_prestartinterface(iff);
+
+       if (action > 0) {
+               if_learnaddrs(ctx, ifs, &ifaddrs);
+               if (iff->active)
+                       dhcpcd_prestartinterface(iff);
+       }
 
        /* Free our discovered list */
        while ((ifp = TAILQ_FIRST(ifs))) {