]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_8_5_patch] assertion failure in resolver.c v9.8.5-P1
authorEvan Hunt <each@isc.org>
Tue, 4 Jun 2013 18:25:49 +0000 (11:25 -0700)
committerEvan Hunt <each@isc.org>
Tue, 4 Jun 2013 18:30:22 +0000 (11:30 -0700)
3584. [security] Caching data from an incompletely signed zone could
trigger an assertion failure in resolver.c [RT #33690]
(cherry picked from commit 276457f7a38f56a5f762238ab89bb45e27948af6)

CHANGES
lib/dns/resolver.c
version

diff --git a/CHANGES b/CHANGES
index f13e87ce4beaf8439f0dd82a46d9275b3cf8a83c..2cfcb7b292f8357559043c6a48a4af32c16a4a6d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+       --- 9.8.5-P1 released ---
+
+3584.  [security]      Caching data from an incompletely signed zone could
+                       trigger an assertion failure in resolver.c [RT #33690]
+
        --- 9.8.5 released ---
 
 3568.  [cleanup]       Add a product description line to the version file,
index 22390b2f2e9f2ef75a744d3c3846a8af9d76e5ac..e21d97e1e66b8285e95c99fee587eaf720a2f125 100644 (file)
@@ -4389,7 +4389,7 @@ fctx_log(void *arg, int level, const char *fmt, ...) {
 
 static inline isc_result_t
 findnoqname(fetchctx_t *fctx, dns_name_t *name, dns_rdatatype_t type,
-           dns_name_t **noqname)
+           dns_name_t **noqnamep)
 {
        dns_rdataset_t *nrdataset, *next, *sigrdataset;
        dns_rdata_rrsig_t rrsig;
@@ -4402,10 +4402,12 @@ findnoqname(fetchctx_t *fctx, dns_name_t *name, dns_rdatatype_t type,
        dns_fixedname_t fclosest;
        dns_name_t *nearest;
        dns_fixedname_t fnearest;
+       dns_rdatatype_t found = dns_rdatatype_none;
+       dns_name_t *noqname = NULL;
 
        FCTXTRACE("findnoqname");
 
-       REQUIRE(noqname != NULL && *noqname == NULL);
+       REQUIRE(noqnamep != NULL && *noqnamep == NULL);
 
        /*
         * Find the SIG for this rdataset, if we have it.
@@ -4474,8 +4476,10 @@ findnoqname(fetchctx_t *fctx, dns_name_t *name, dns_rdatatype_t type,
                                                        &data, NULL, fctx_log,
                                                        fctx)))
                        {
-                               if (!exists)
-                                       *noqname = nsec;
+                               if (!exists) {
+                                       noqname = nsec;
+                                       found = dns_rdatatype_nsec;
+                               }
                        }
 
                        if (nrdataset->type == dns_rdatatype_nsec3 &&
@@ -4488,13 +4492,26 @@ findnoqname(fetchctx_t *fctx, dns_name_t *name, dns_rdatatype_t type,
                                                         closest, nearest,
                                                         fctx_log, fctx)))
                        {
-                               if (!exists && setnearest)
-                                       *noqname = nsec;
+                               if (!exists && setnearest) {
+                                       noqname = nsec;
+                                       found = dns_rdatatype_nsec3;
+                               }
                        }
                }
        }
        if (result == ISC_R_NOMORE)
                result = ISC_R_SUCCESS;
+       if (noqname != NULL) {
+               for (sigrdataset = ISC_LIST_HEAD(noqname->list);
+                    sigrdataset != NULL;
+                    sigrdataset = ISC_LIST_NEXT(sigrdataset, link)) {
+                       if (sigrdataset->type == dns_rdatatype_rrsig &&
+                           sigrdataset->covers == found)
+                               break;
+               }
+               if (sigrdataset != NULL)
+                       *noqnamep = noqname;
+       }
        return (result);
 }
 
diff --git a/version b/version
index 925f9a7f24c4340efda809105d1c4dab0f7e5b3a..722bbe7f9b2f60cbcb4baeede02fcaac87b93ba5 100644 (file)
--- a/version
+++ b/version
@@ -8,5 +8,5 @@ DESCRIPTION=
 MAJORVER=9
 MINORVER=8
 PATCHVER=5
-RELEASETYPE=
-RELEASEVER=
+RELEASETYPE=-P
+RELEASEVER=1