summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2018-03-27 23:06:30 +0100
committerRoy Marples <roy@marples.name>2018-03-27 23:06:30 +0100
commitfc7b79180448deedf5550d3c03a8ef0e66ad293d (patch)
tree9523ebb952cdb3eb9cd54e820b0817e3f9d4e81e
parentfa928aa79dfc96e3da58652ea5cf8c83c140e022 (diff)
downloaddhcpcd-fc7b79180448deedf5550d3c03a8ef0e66ad293d.tar.xz
BSD: fix segfault when on carrier when IPv6 addresses are present
This doesn't affect NetBSD.
-rw-r--r--src/dhcpcd.c10
1 files 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))) {