Fix processing of CIDRs with mask 0
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 18 Jun 2013 14:11:56 +0000 (16:11 +0200)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 18 Jun 2013 14:11:56 +0000 (16:11 +0200)
iptables.c

index df0d70425eaf4cc48dd9c382f2a88d83477ea01e..7d91452ff6f455cd3551a08cbe38c1d1590109b3 100644 (file)
@@ -609,7 +609,10 @@ fw3_ipt_rule_in_out(struct fw3_ipt_rule *r,
 static void
 ip4prefix2mask(int prefix, struct in_addr *mask)
 {
-       mask->s_addr = htonl(~((1 << (32 - prefix)) - 1));
+       if (prefix > 0)
+               mask->s_addr = htonl(~((1 << (32 - prefix)) - 1));
+       else
+               mask->s_addr = 0;
 }
 
 #ifndef DISABLE_IPV6