summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2004-02-24 01:20:51 +0000
committercperciva <cperciva@FreeBSD.org>2004-02-24 01:20:51 +0000
commit9678edca4faf1b61c1895429426ffb0eb7dcf14a (patch)
treedabb71b83d37240e4d76edcca0566cb4890d84df
parent1482f80711eab79db8dcc75f6f587579e49155fd (diff)
downloadFreeBSD-src-9678edca4faf1b61c1895429426ffb0eb7dcf14a.zip
FreeBSD-src-9678edca4faf1b61c1895429426ffb0eb7dcf14a.tar.gz
Fix array overflow: If len=128, don't access [16] of a 16-byte IPv6
address, even if we subsequently ignore its value by applying a >>8 to it. Reported by: "Ted Unangst" <tedu@coverity.com> Approved by: rwatson (mentor), {ume, suz} (KAME)
-rw-r--r--sys/netinet6/in6.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index d5bd36c..801472a 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -1830,7 +1830,8 @@ in6_are_prefix_equal(p1, p2, len)
if (bcmp(&p1->s6_addr, &p2->s6_addr, bytelen))
return (0);
- if (p1->s6_addr[bytelen] >> (8 - bitlen) !=
+ if (bitlen != 0 &&
+ p1->s6_addr[bytelen] >> (8 - bitlen) !=
p2->s6_addr[bytelen] >> (8 - bitlen))
return (0);
OpenPOWER on IntegriCloud