]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
DHCP: Remove an assertation in get_lease if ia is NULL
authorRoy Marples <roy@marples.name>
Tue, 9 Jul 2024 12:26:24 +0000 (13:26 +0100)
committerRoy Marples <roy@marples.name>
Tue, 9 Jul 2024 12:26:24 +0000 (13:26 +0100)
It's very unlikely that is would be NULL and it only
triggers when a STATIC or INFORM address is ripped out under us.

src/dhcp.c

index 6e6b49a2ff012c7204ba294dabecfe579ee9ef22..0fea3351786d6ebd36f02f71dde31dda222b52d7 100644 (file)
@@ -1409,9 +1409,15 @@ get_lease(struct interface *ifp,
                        const struct ipv4_addr *ia;
 
                        ia = ipv4_iffindaddr(ifp, &lease->addr, NULL);
-                       assert(ia != NULL);
-                       lease->mask = ia->mask;
-                       lease->brd = ia->brd;
+                       if (ia == NULL) {
+                               lease->mask.s_addr =
+                                   ipv4_getnetmask(lease->addr.s_addr);
+                               lease->brd.s_addr =
+                                   lease->addr.s_addr | ~lease->mask.s_addr;
+                       } else {
+                               lease->mask = ia->mask;
+                               lease->brd = ia->brd;
+                       }
                }
        } else {
                if (get_option_addr(ctx, &lease->mask, bootp, len,