[NETFILTER]: xt_iprange: fix subtraction-based comparison
authorJan Engelhardt <jengelh@computergmbh.de>
Wed, 20 Feb 2008 01:20:06 +0000 (17:20 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Feb 2008 01:20:06 +0000 (17:20 -0800)
The host address parts need to be converted to host-endian first
before arithmetic makes any sense on them.

Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netfilter/xt_iprange.c

index 4f984dc60319645648a66403bcb2dd2f014efd23..500528d60cd7a571cbdacc762e0b6f8f775d53ef 100644 (file)
@@ -102,7 +102,7 @@ iprange_ipv6_sub(const struct in6_addr *a, const struct in6_addr *b)
        int r;
 
        for (i = 0; i < 4; ++i) {
-               r = (__force u32)a->s6_addr32[i] - (__force u32)b->s6_addr32[i];
+               r = ntohl(a->s6_addr32[i]) - ntohl(b->s6_addr32[i]);
                if (r != 0)
                        return r;
        }