diff options
author | Stuart Henderson <sthen@cvs.openbsd.org> | 2011-02-14 11:01:37 +0000 |
---|---|---|
committer | Stuart Henderson <sthen@cvs.openbsd.org> | 2011-02-14 11:01:37 +0000 |
commit | cdb3640c800fb026c9f2f20144358a80b0a54c5a (patch) | |
tree | ab9548da908aa11eaee7e64d290b2adf3191bd1e | |
parent | 60432a4fd018811414b72de0b53800a75af46f20 (diff) |
Add missing byte-order swap to pf_match_addr_range. Without this, rules
using address ranges (e.g. "10.1.1.1 - 10.1.1.5") did not match addresses
correctly on little-endian systems. ok henning@
-rw-r--r-- | sys/net/pf.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/net/pf.c b/sys/net/pf.c index 20c791f8cf6..d241bbe6e50 100644 --- a/sys/net/pf.c +++ b/sys/net/pf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pf.c,v 1.725 2011/02/06 23:12:12 bluhm Exp $ */ +/* $OpenBSD: pf.c,v 1.726 2011/02/14 11:01:36 sthen Exp $ */ /* * Copyright (c) 2001 Daniel Hartmeier @@ -2180,8 +2180,8 @@ pf_match_addr_range(struct pf_addr *b, struct pf_addr *e, switch (af) { #ifdef INET case AF_INET: - if ((a->addr32[0] < b->addr32[0]) || - (a->addr32[0] > e->addr32[0])) + if ((ntohl(a->addr32[0]) < ntohl(b->addr32[0])) || + (ntohl(a->addr32[0]) > ntohl(e->addr32[0]))) return (0); break; #endif /* INET */ @@ -2191,15 +2191,15 @@ pf_match_addr_range(struct pf_addr *b, struct pf_addr *e, /* check a >= b */ for (i = 0; i < 4; ++i) - if (a->addr32[i] > b->addr32[i]) + if (ntohl(a->addr32[i]) > ntohl(b->addr32[i])) break; - else if (a->addr32[i] < b->addr32[i]) + else if (ntohl(a->addr32[i]) < ntohl(b->addr32[i])) return (0); /* check a <= e */ for (i = 0; i < 4; ++i) - if (a->addr32[i] < e->addr32[i]) + if (ntohl(a->addr32[i]) < ntohl(e->addr32[i])) break; - else if (a->addr32[i] > e->addr32[i]) + else if (ntohl(a->addr32[i]) > ntohl(e->addr32[i])) return (0); break; } |