From 6bdb6449a76e465c2b5cf1ea07c98dafaa5f0408 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Tue, 27 Mar 2018 23:06:30 +0100 Subject: [PATCH] BSD: fix segfault when on carrier when IPv6 addresses are present This doesn't affect NetBSD. --- src/dhcpcd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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))) { -- 2.47.2