From: Roy Marples Date: Tue, 5 Nov 2019 15:52:57 +0000 (+0000) Subject: INET: Fix corruption of IPv4 address flags when renewing X-Git-Tag: v8.1.2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56585766cf04f52b5a4268e84e3d433468284e40;p=thirdparty%2Fdhcpcd.git INET: Fix corruption of IPv4 address flags when renewing What a mistaka to maka! --- diff --git a/src/ipv4.c b/src/ipv4.c index fd2a15d7..53550696 100644 --- a/src/ipv4.c +++ b/src/ipv4.c @@ -654,7 +654,7 @@ ipv4_addaddr(struct interface *ifp, const struct in_addr *addr, #endif ia->flags = IPV4_AF_NEW; } else - ia->flags |= ~IPV4_AF_NEW; + ia->flags &= ~IPV4_AF_NEW; ia->mask = *mask; ia->brd = *bcast; @@ -952,15 +952,13 @@ ipv4_free(struct interface *ifp) struct ipv4_state *state; struct ipv4_addr *ia; - if (ifp) { - state = IPV4_STATE(ifp); - if (state) { - while ((ia = TAILQ_FIRST(&state->addrs))) { - TAILQ_REMOVE(&state->addrs, ia, next); - free(ia); - } - free(state->buffer); - free(state); - } + if (ifp == NULL || (state = IPV4_STATE(ifp)) == NULL) + return; + + while ((ia = TAILQ_FIRST(&state->addrs))) { + TAILQ_REMOVE(&state->addrs, ia, next); + free(ia); } + free(state->buffer); + free(state); }