From: Roy Marples Date: Tue, 16 Jun 2015 09:34:23 +0000 (+0000) Subject: Check the interface has an IPv4 state before enumarting addresses. X-Git-Tag: v6.9.1~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb0f63fb9173f8b645138f5f114e95f6478ad3b5;p=thirdparty%2Fdhcpcd.git Check the interface has an IPv4 state before enumarting addresses. --- diff --git a/ipv4ll.c b/ipv4ll.c index 48c18b8e..fee857f6 100644 --- a/ipv4ll.c +++ b/ipv4ll.c @@ -344,7 +344,6 @@ ipv4ll_freedrop(struct interface *ifp, int drop) * because we piggy back on the state of DHCP. */ if (drop && (ifp->options->options & DHCPCD_NODROP) != DHCPCD_NODROP) { struct ipv4_state *istate; - struct ipv4_addr *ia, *ian; if (state && state->addr.s_addr != INADDR_ANY) { ipv4_deladdr(ifp, &state->addr, &inaddr_llmask); @@ -352,10 +351,13 @@ ipv4ll_freedrop(struct interface *ifp, int drop) } /* Free any other link local addresses that might exist. */ - istate = IPV4_STATE(ifp); - TAILQ_FOREACH_SAFE(ia, &istate->addrs, next, ian) { - if (IN_LINKLOCAL(ntohl(ia->addr.s_addr))) - ipv4_deladdr(ifp, &ia->addr, &ia->net); + if ((istate = IPV4_STATE(ifp)) != NULL) { + struct ipv4_addr *ia, *ian; + + TAILQ_FOREACH_SAFE(ia, &istate->addrs, next, ian) { + if (IN_LINKLOCAL(ntohl(ia->addr.s_addr))) + ipv4_deladdr(ifp, &ia->addr, &ia->net); + } } }