From 2501e258afd9f2b5bbf55d0de4f4c579a0fa7a47 Mon Sep 17 00:00:00 2001 From: Sam Hartman Date: Thu, 10 Jul 2014 09:42:18 -0400 Subject: [PATCH] fr_inaddr_mask fix 0 prefix Don't depend on the behavior of shifting by 32-bits on a 32-bit type. --- src/lib/misc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/misc.c b/src/lib/misc.c index 84d1624..af0616c 100644 --- a/src/lib/misc.c +++ b/src/lib/misc.c @@ -961,7 +961,9 @@ struct in_addr fr_inaddr_mask(struct in_addr const *ipaddr, uint8_t prefix) return *ipaddr; } - ret = htonl(~((0x00000001UL << (32 - prefix)) - 1)) & ipaddr->s_addr; + if (prefix == 0) + ret = 0; + else ret = htonl(~((0x00000001UL << (32 - prefix)) - 1)) & ipaddr->s_addr; return (*(struct in_addr *)&ret); } -- 2.1.4