From: Denis Ovsienko Date: Sun, 18 Dec 2011 11:40:17 +0000 (+0400) Subject: lib: address type-punned pointers in prefix_same() X-Git-Tag: frr-2.0-rc1~1941 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=fe40bfa2e1b913e24d6b8374fd83a19d00ad7c1c;p=mirror%2Ffrr.git lib: address type-punned pointers in prefix_same() IPV4_ADDR_SAME() wasn't passed the right union member, this could cause a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before the error could be created by macro upgrade. --- diff --git a/lib/prefix.c b/lib/prefix.c index 580ba31a4e..1b1c662671 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -2411,11 +2411,11 @@ prefix_same (const struct prefix *p1, const struct prefix *p2) if (p1->family == p2->family && p1->prefixlen == p2->prefixlen) { if (p1->family == AF_INET) - if (IPV4_ADDR_SAME (&p1->u.prefix, &p2->u.prefix)) + if (IPV4_ADDR_SAME (&p1->u.prefix4.s_addr, &p2->u.prefix4.s_addr)) return 1; #ifdef HAVE_IPV6 if (p1->family == AF_INET6 ) - if (IPV6_ADDR_SAME (&p1->u.prefix, &p2->u.prefix)) + if (IPV6_ADDR_SAME (&p1->u.prefix6.s6_addr, &p2->u.prefix6.s6_addr)) return 1; #endif /* HAVE_IPV6 */ }