diff --git a/CHANGES b/CHANGES index 050eadda22..bcb958e213 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4709. [cleanup] Use dns_name_fullhash() to hash names for RRL. + [RT #45435] + 4708. [cleanup] Legacy Windows builds (i.e. for XP and earlier) are no longer supported. [RT #45186] diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index ce904f6c9d..5b12fb6978 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -353,7 +353,11 @@ unsigned int dns_name_hashbylabel(const dns_name_t *name, isc_boolean_t case_sensitive); /*%< * Provide a hash value for 'name', where the hash value is the sum - * of the hash values of each label. + * of the hash values of each label. This function should only be used + * when incremental hashing is necessary, for example, during RBT + * traversal. It is not currently used in BIND. Generally, + * dns_name_fullhash() is the correct function to use for name + * hashing. * * Note: if 'case_sensitive' is ISC_FALSE, then names which differ only in * case will have the same hash value. diff --git a/lib/dns/rrl.c b/lib/dns/rrl.c index 27ceb9d0f3..31166ed610 100644 --- a/lib/dns/rrl.c +++ b/lib/dns/rrl.c @@ -417,11 +417,11 @@ make_key(const dns_rrl_t *rrl, dns_rrl_key_t *key, { dns_name_init(&base, base_offsets); dns_name_getlabelsequence(qname, 1, labels-1, &base); - key->s.qname_hash = dns_name_hashbylabel(&base, - ISC_FALSE); + key->s.qname_hash = + dns_name_fullhash(&base, ISC_FALSE); } else { - key->s.qname_hash = dns_name_hashbylabel(qname, - ISC_FALSE); + key->s.qname_hash = + dns_name_fullhash(qname, ISC_FALSE); } }