]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_9] check for physical equivalence in names
authorEvan Hunt <each@isc.org>
Wed, 19 Jun 2013 01:15:07 +0000 (18:15 -0700)
committerEvan Hunt <each@isc.org>
Wed, 19 Jun 2013 01:15:07 +0000 (18:15 -0700)
3599. [tuning] Check for pointer equivalence in name comparisons.
[RT #18125]

CHANGES
lib/dns/name.c

diff --git a/CHANGES b/CHANGES
index 7314f29ed639ea27a327daa57e1b2ad991fbeda9..f82300a6ba9d8d8a7208bdbf231cf1a056c8dbdc 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3599.  [tuning]        Check for pointer equivalence in name comparisons.
+                       [RT #18125]
+
 3596.  [port]          Updated win32 build documentation, added
                        dnssec-verify. [RT #22067]
 
index 7fb21e138c3c8c99631d019991855be4760ac25f..9a6c64afd68a36483a44ba78b3cc61c549eaee25 100644 (file)
@@ -578,6 +578,11 @@ dns_name_fullcompare(const dns_name_t *name1, const dns_name_t *name2,
        REQUIRE((name1->attributes & DNS_NAMEATTR_ABSOLUTE) ==
                (name2->attributes & DNS_NAMEATTR_ABSOLUTE));
 
+       if (name1 == name2) {
+               *orderp = 0;
+               return (dns_namereln_equal);
+       }
+
        SETUP_OFFSETS(name1, offsets1, odata1);
        SETUP_OFFSETS(name2, offsets2, odata2);
 
@@ -691,6 +696,9 @@ dns_name_equal(const dns_name_t *name1, const dns_name_t *name2) {
        REQUIRE((name1->attributes & DNS_NAMEATTR_ABSOLUTE) ==
                (name2->attributes & DNS_NAMEATTR_ABSOLUTE));
 
+       if (name1 == name2)
+               return (ISC_TRUE);
+
        if (name1->length != name2->length)
                return (ISC_FALSE);