Adam Tkac b246b7
diff -up bind-9.5.0b3/lib/isc/netaddr.c.any bind-9.5.0b3/lib/isc/netaddr.c
Adam Tkac b246b7
--- bind-9.5.0b3/lib/isc/netaddr.c.any	2008-05-05 22:01:29.000000000 +0200
Adam Tkac b246b7
+++ bind-9.5.0b3/lib/isc/netaddr.c	2008-05-05 22:24:52.000000000 +0200
Adam Tkac b246b7
@@ -69,10 +69,11 @@ isc_boolean_t
Adam Tkac b246b7
 isc_netaddr_eqprefix(const isc_netaddr_t *a, const isc_netaddr_t *b,
Adam Tkac b246b7
 		     unsigned int prefixlen)
Adam Tkac b246b7
 {
Adam Tkac b246b7
-	const unsigned char *pa, *pb;
Adam Tkac b246b7
+	const unsigned char *pa, *pb, *pany;
Adam Tkac b246b7
 	unsigned int ipabytes; /* Length of whole IP address in bytes */
Adam Tkac b246b7
 	unsigned int nbytes;   /* Number of significant whole bytes */
Adam Tkac b246b7
 	unsigned int nbits;    /* Number of significant leftover bits */
Adam Tkac b246b7
+	isc_netaddr_t any;     /* represents 0.0.0.0 or ::0 */
Adam Tkac b246b7
 
Adam Tkac b246b7
 	REQUIRE(a != NULL && b != NULL);
Adam Tkac b246b7
 
Adam Tkac b246b7
@@ -86,11 +87,15 @@ isc_netaddr_eqprefix(const isc_netaddr_t
Adam Tkac b246b7
 	case AF_INET:
Adam Tkac b246b7
 		pa = (const unsigned char *) &a->type.in;
Adam Tkac b246b7
 		pb = (const unsigned char *) &b->type.in;
Adam Tkac b246b7
+		isc_netaddr_any(&any;;
Adam Tkac b246b7
+		pany = (const unsigned char *) &any.type.in;
Adam Tkac b246b7
 		ipabytes = 4;
Adam Tkac b246b7
 		break;
Adam Tkac b246b7
 	case AF_INET6:
Adam Tkac b246b7
 		pa = (const unsigned char *) &a->type.in6;
Adam Tkac b246b7
 		pb = (const unsigned char *) &b->type.in6;
Adam Tkac b246b7
+		isc_netaddr_any6(&any;;
Adam Tkac b246b7
+		pany = (const unsigned char *) &any.type.in6;
Adam Tkac b246b7
 		ipabytes = 16;
Adam Tkac b246b7
 		break;
Adam Tkac b246b7
 	default:
Adam Tkac b246b7
@@ -99,6 +104,10 @@ isc_netaddr_eqprefix(const isc_netaddr_t
Adam Tkac b246b7
 		return (ISC_FALSE);
Adam Tkac b246b7
 	}
Adam Tkac b246b7
 
Adam Tkac b246b7
+	if (memcmp(pa, pany, ipabytes) == 0 ||
Adam Tkac b246b7
+	    memcmp(pb, pany, ipabytes) == 0)
Adam Tkac b246b7
+		return (ISC_TRUE);
Adam Tkac b246b7
+
Adam Tkac b246b7
 	/*
Adam Tkac b246b7
 	 * Don't crash if we get a pattern like 10.0.0.1/9999999.
Adam Tkac b246b7
 	 */