summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-08 21:09:31 +0000
committerRoy Marples <roy@marples.name>2016-11-08 21:09:31 +0000
commitdc415ba6b19ff1c19db9671fddce7607fd3e4e07 (patch)
tree557eff4b0f83e12306d946e16b1868efe2382c46
parentebcafdf0b30b8195b041e3f6b801cad7909f90f5 (diff)
downloaddhcpcd-dc415ba6b19ff1c19db9671fddce7607fd3e4e07.tar.xz
If netmask is INADDR_ANY then CIDR must be 0.
-rw-r--r--sa.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sa.c b/sa.c
index 66eda8dd..609f9ee1 100644
--- 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 */