diff options
| author | Roy Marples <roy@marples.name> | 2018-03-27 23:06:30 +0100 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2018-03-27 23:06:30 +0100 |
| commit | fc7b79180448deedf5550d3c03a8ef0e66ad293d (patch) | |
| tree | 9523ebb952cdb3eb9cd54e820b0817e3f9d4e81e | |
| parent | fa928aa79dfc96e3da58652ea5cf8c83c140e022 (diff) | |
| download | dhcpcd-fc7b79180448deedf5550d3c03a8ef0e66ad293d.tar.xz | |
BSD: fix segfault when on carrier when IPv6 addresses are present
This doesn't affect NetBSD.
| -rw-r--r-- | src/dhcpcd.c | 10 |
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))) { |
