From: Wouter Wijngaards Date: Wed, 24 Feb 2016 15:02:35 +0000 (+0000) Subject: - Fix that NSEC3 negative cache is used when there is no salt. X-Git-Tag: release-1.5.8^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=718e98b1cdd60f7f9599c9751d15bf3703da9c45;p=thirdparty%2Funbound.git - Fix that NSEC3 negative cache is used when there is no salt. git-svn-id: file:///svn/unbound/trunk@3639 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 79931efe9..6bcc32ab4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 24 February 2016: Wouter - Fix OpenBSD asynclook lock free that gets used later (fix test code). + - Fix that NSEC3 negative cache is used when there is no salt. 23 February 2016: Wouter - ub_ctx_set_stub() function for libunbound to config stub zones. diff --git a/validator/val_neg.c b/validator/val_neg.c index ab31f483e..a5e687fdc 100644 --- a/validator/val_neg.c +++ b/validator/val_neg.c @@ -823,13 +823,22 @@ void neg_insert_data(struct val_neg_cache* neg, (h != zone->nsec3_hash || it != zone->nsec3_iter || slen != zone->nsec3_saltlen || memcmp(zone->nsec3_salt, s, slen) != 0)) { - uint8_t* sa = memdup(s, slen); - if(sa) { + + if(slen > 0) { + uint8_t* sa = memdup(s, slen); + if(sa) { + free(zone->nsec3_salt); + zone->nsec3_salt = sa; + zone->nsec3_saltlen = slen; + zone->nsec3_iter = it; + zone->nsec3_hash = h; + } + } else { free(zone->nsec3_salt); - zone->nsec3_salt = sa; - zone->nsec3_saltlen = slen; - zone->nsec3_hash = h; + zone->nsec3_salt = NULL; + zone->nsec3_saltlen = 0; zone->nsec3_iter = it; + zone->nsec3_hash = h; } } }