]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
INET: Fix corruption of IPv4 address flags when renewing
authorRoy Marples <roy@marples.name>
Tue, 5 Nov 2019 15:52:57 +0000 (15:52 +0000)
committerRoy Marples <roy@marples.name>
Tue, 5 Nov 2019 15:52:57 +0000 (15:52 +0000)
What a mistaka to maka!

src/ipv4.c

index fd2a15d7019510f8fa50b43c86b55ea40e26a17b..53550696048b55cf94225ab61f5b4d36a87320df 100644 (file)
@@ -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);
 }