From f13385770ee4b84c0ba74a8b09bc0447492a6f53 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 8 Sep 2017 15:46:15 -0700 Subject: [PATCH] [master] change hash function for RRL 4709. [cleanup] Use dns_name_fullhash() to hash names for RRL. [RT #45435] --- CHANGES | 3 +++ lib/dns/include/dns/name.h | 6 +++++- lib/dns/rrl.c | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) 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); } }