From: Roy Marples Date: Tue, 27 Mar 2018 22:06:30 +0000 (+0100) Subject: BSD: fix segfault when on carrier when IPv6 addresses are present X-Git-Tag: v7.0.3~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bdb6449a76e465c2b5cf1ea07c98dafaa5f0408;p=thirdparty%2Fdhcpcd.git BSD: fix segfault when on carrier when IPv6 addresses are present This doesn't affect NetBSD. --- diff --git a/src/dhcpcd.c b/src/dhcpcd.c index 8b35ee59..23ca1870 100644 --- a/src/dhcpcd.c +++ b/src/dhcpcd.c @@ -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))) {