]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
If netmask is INADDR_ANY then CIDR must be 0.
authorRoy Marples <roy@marples.name>
Tue, 8 Nov 2016 21:09:31 +0000 (21:09 +0000)
committerRoy Marples <roy@marples.name>
Tue, 8 Nov 2016 21:09:31 +0000 (21:09 +0000)
sa.c

diff --git a/sa.c b/sa.c
index 66eda8dd4875a90407ca119944f8f3676bca3799..609f9ee15de55fad4c7aec97759804f7e186c2b2 100644 (file)
--- a/sa.c
+++ b/sa.c
@@ -195,6 +195,8 @@ sa_toprefix(const struct sockaddr *sa)
                int cidr;
 
                sin = satocsin(sa);
+               if (sin->sin_addr.s_addr == INADDR_ANY)
+                       return 0;
                mask = (int)ntohl(sin->sin_addr.s_addr);
                cidr = 33 - ffs(mask);          /* 33 - (1 .. 32) -> 32 .. 1 */
                if (cidr < 32) {                /* more than 1 bit in mask */