summaryrefslogtreecommitdiffstats
path: root/contrib/unbound/validator/val_neg.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/unbound/validator/val_neg.c')
-rw-r--r--contrib/unbound/validator/val_neg.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/contrib/unbound/validator/val_neg.c b/contrib/unbound/validator/val_neg.c
index ab31f48..a5e687f 100644
--- a/contrib/unbound/validator/val_neg.c
+++ b/contrib/unbound/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;
}
}
}
OpenPOWER on IntegriCloud