]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fix bad-cache assert
authorEvan Hunt <each@isc.org>
Mon, 2 Jul 2012 17:03:46 +0000 (10:03 -0700)
committerEvan Hunt <each@isc.org>
Mon, 2 Jul 2012 17:04:40 +0000 (10:04 -0700)
3346. [security] Bad-cache data could be used before it was
initialized, causing an assert. [RT #30025]

CHANGES
lib/dns/resolver.c

diff --git a/CHANGES b/CHANGES
index 037acaf8b59bc5339340de19f36254230490e9b7..e5b006c09173a878b78955408af81e6fd3c2d2ab 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3346.  [security]      Bad-cache data could be used before it was
+                       initialized, causing an assert. [RT #30025]
+
 3342.  [bug]           Change #3314 broke saving of stub zones to disk
                        resulting in excessive cpu usage in some cases.
                        [RT #29952]
index 52a336684ecda6caebedd87c8bc0fe0b22856b24..30040544bbcff58a09b6874cd4dd208dba27535a 100644 (file)
@@ -8502,6 +8502,7 @@ dns_resolver_addbadcache(dns_resolver_t *resolver, dns_name_t *name,
                        goto cleanup;
                bad->type = type;
                bad->hashval = hashval;
+               bad->expire = *expire;
                isc_buffer_init(&buffer, bad + 1, name->length);
                dns_name_init(&bad->name, NULL);
                dns_name_copy(name, &bad->name, &buffer);
@@ -8513,8 +8514,8 @@ dns_resolver_addbadcache(dns_resolver_t *resolver, dns_name_t *name,
                if (resolver->badcount < resolver->badhash * 2 &&
                    resolver->badhash > DNS_BADCACHE_SIZE)
                        resizehash(resolver, &now, ISC_FALSE);
-       }
-       bad->expire = *expire;
+       } else
+               bad->expire = *expire;
  cleanup:
        UNLOCK(&resolver->lock);
 }