MFC r304152:
pf: 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. PR: 211796 Obtained from: OpenBSD (sthen)
This commit is contained in:
parent
c0bb62a13c
commit
e81c29b187
@ -2564,8 +2564,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 */
|
||||
@ -2575,15 +2575,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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user