summaryrefslogtreecommitdiffstats
path: root/bind-9.5-any.patch
diff options
context:
space:
mode:
authorAdam Tkac <atkac@fedoraproject.org>2008-05-06 09:44:46 +0000
committerAdam Tkac <atkac@fedoraproject.org>2008-05-06 09:44:46 +0000
commitdb5acf9fc2c83de392ff64219a513a907c7c632c (patch)
tree6661e3910aab8ba484b5e6384baf041be74f1feb /bind-9.5-any.patch
parentab8076b76df2b9d6347182a534a3cec1fba87afa (diff)
- addresses 0.0.0.0 and ::0 really match any (#275091, comment #28)
Diffstat (limited to 'bind-9.5-any.patch')
-rw-r--r--bind-9.5-any.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/bind-9.5-any.patch b/bind-9.5-any.patch
new file mode 100644
index 0000000..55e96fc
--- /dev/null
+++ b/bind-9.5-any.patch
@@ -0,0 +1,43 @@
+diff -up bind-9.5.0b3/lib/isc/netaddr.c.any bind-9.5.0b3/lib/isc/netaddr.c
+--- bind-9.5.0b3/lib/isc/netaddr.c.any 2008-05-05 22:01:29.000000000 +0200
++++ bind-9.5.0b3/lib/isc/netaddr.c 2008-05-05 22:24:52.000000000 +0200
+@@ -69,10 +69,11 @@ isc_boolean_t
+ isc_netaddr_eqprefix(const isc_netaddr_t *a, const isc_netaddr_t *b,
+ unsigned int prefixlen)
+ {
+- const unsigned char *pa, *pb;
++ const unsigned char *pa, *pb, *pany;
+ unsigned int ipabytes; /* Length of whole IP address in bytes */
+ unsigned int nbytes; /* Number of significant whole bytes */
+ unsigned int nbits; /* Number of significant leftover bits */
++ isc_netaddr_t any; /* represents 0.0.0.0 or ::0 */
+
+ REQUIRE(a != NULL && b != NULL);
+
+@@ -86,11 +87,15 @@ isc_netaddr_eqprefix(const isc_netaddr_t
+ case AF_INET:
+ pa = (const unsigned char *) &a->type.in;
+ pb = (const unsigned char *) &b->type.in;
++ isc_netaddr_any(&any);
++ pany = (const unsigned char *) &any.type.in;
+ ipabytes = 4;
+ break;
+ case AF_INET6:
+ pa = (const unsigned char *) &a->type.in6;
+ pb = (const unsigned char *) &b->type.in6;
++ isc_netaddr_any6(&any);
++ pany = (const unsigned char *) &any.type.in6;
+ ipabytes = 16;
+ break;
+ default:
+@@ -99,6 +104,10 @@ isc_netaddr_eqprefix(const isc_netaddr_t
+ return (ISC_FALSE);
+ }
+
++ if (memcmp(pa, pany, ipabytes) == 0 ||
++ memcmp(pb, pany, ipabytes) == 0)
++ return (ISC_TRUE);
++
+ /*
+ * Don't crash if we get a pattern like 10.0.0.1/9999999.
+ */