Commit 6def1eb48101600884ebed56de03041fadc7a985

Authored by Alexey Dobriyan
Committed by David S. Miller
1 parent 10a03a42d1

netfilter: xt_iprange: fix range inversion match

Inverted IPv4 v1 and IPv6 v0 matches don't match anything since 2.6.25-rc1!

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Acked-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 4 additions and 4 deletions Side-by-side Diff

net/netfilter/xt_iprange.c
... ... @@ -61,7 +61,7 @@
61 61 if (info->flags & IPRANGE_SRC) {
62 62 m = ntohl(iph->saddr) < ntohl(info->src_min.ip);
63 63 m |= ntohl(iph->saddr) > ntohl(info->src_max.ip);
64   - m ^= info->flags & IPRANGE_SRC_INV;
  64 + m ^= !!(info->flags & IPRANGE_SRC_INV);
65 65 if (m) {
66 66 pr_debug("src IP " NIPQUAD_FMT " NOT in range %s"
67 67 NIPQUAD_FMT "-" NIPQUAD_FMT "\n",
... ... @@ -75,7 +75,7 @@
75 75 if (info->flags & IPRANGE_DST) {
76 76 m = ntohl(iph->daddr) < ntohl(info->dst_min.ip);
77 77 m |= ntohl(iph->daddr) > ntohl(info->dst_max.ip);
78   - m ^= info->flags & IPRANGE_DST_INV;
  78 + m ^= !!(info->flags & IPRANGE_DST_INV);
79 79 if (m) {
80 80 pr_debug("dst IP " NIPQUAD_FMT " NOT in range %s"
81 81 NIPQUAD_FMT "-" NIPQUAD_FMT "\n",
82 82  
... ... @@ -114,14 +114,14 @@
114 114 if (info->flags & IPRANGE_SRC) {
115 115 m = iprange_ipv6_sub(&iph->saddr, &info->src_min.in6) < 0;
116 116 m |= iprange_ipv6_sub(&iph->saddr, &info->src_max.in6) > 0;
117   - m ^= info->flags & IPRANGE_SRC_INV;
  117 + m ^= !!(info->flags & IPRANGE_SRC_INV);
118 118 if (m)
119 119 return false;
120 120 }
121 121 if (info->flags & IPRANGE_DST) {
122 122 m = iprange_ipv6_sub(&iph->daddr, &info->dst_min.in6) < 0;
123 123 m |= iprange_ipv6_sub(&iph->daddr, &info->dst_max.in6) > 0;
124   - m ^= info->flags & IPRANGE_DST_INV;
  124 + m ^= !!(info->flags & IPRANGE_DST_INV);
125 125 if (m)
126 126 return false;
127 127 }