]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix that NSEC3 negative cache is used when there is no salt. release-1.5.8 release-1.5.8rc1
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 24 Feb 2016 15:02:35 +0000 (15:02 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 24 Feb 2016 15:02:35 +0000 (15:02 +0000)
git-svn-id: file:///svn/unbound/trunk@3639 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
validator/val_neg.c

index 79931efe924d34d1411e4f6faca330281717ba80..6bcc32ab45661af9f5837c65b04574ab15223886 100644 (file)
@@ -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.
index ab31f483ef41bfb1af1cd72255880438f9423824..a5e687fdc417d9e800d8c845cc5ce58452d5fb2b 100644 (file)
@@ -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;
                        }
                }
        }