diff --git a/CHANGES b/CHANGES index 945f5b9c5c..bdf9211a9e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3599. [tuning] Check for pointer equivalence in name comparisons. + [RT #18125] + 3594. [maint] Update config.guess and config.sub. [RT #33816] 3592. [doc] Moved documentation of rndc command options to the diff --git a/lib/dns/name.c b/lib/dns/name.c index 7fb21e138c..9a6c64afd6 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -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);