Compare commits

...

6 Commits

Author SHA1 Message Date
cvs2git
0ad328daa5 This commit was manufactured by cvs2git to create branch 'rt27009'. 2011-11-16 09:34:42 +00:00
cvs2git
9aa731dea4 This commit was manufactured by cvs2git to create branch 'v9_8_1_forensics'. 2011-11-16 09:34:41 +00:00
Mark Andrews
b0fe6ea559 3218. [security] Cache lookup could return RRSIG data associated with
nonexistent records, leading to an assertion
                        failure. [RT #26590]
2011-11-16 09:34:40 +00:00
Mark Andrews
d9486f40ea 9.8.1-P1
3218.   [security]       Workaround INSIST failure. [RT #26590]
2011-11-16 09:32:08 +00:00
cvs2git
a745f77bd5 This commit was manufactured by cvs2git to create branch 'v9_8_1_patch'. 2011-08-24 03:17:33 +00:00
cvs2git
af8f35aa7c This commit was manufactured by cvs2git to create branch
'custom_ATT_v9_8_1'.
2011-08-24 03:17:31 +00:00
4 changed files with 21 additions and 18 deletions

View File

@@ -1,3 +1,9 @@
--- 9.8.1-P1 released ---
3218. [security] Cache lookup could return RRSIG data associated with
nonexistent records, leading to an assertion
failure. [RT #26590]
--- 9.8.1 released ---
--- 9.8.1rc1 released ---

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: query.c,v 1.353.8.11 2011/06/09 03:14:03 marka Exp $ */
/* $Id: query.c,v 1.353.8.11.4.1 2011/11/16 09:32:08 marka Exp $ */
/*! \file */
@@ -1393,11 +1393,9 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto addname;
if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset);
/*
* Negative cache entries don't have sigrdatasets.
*/
INSIST(sigrdataset == NULL ||
! dns_rdataset_isassociated(sigrdataset));
if (sigrdataset != NULL &&
dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
}
if (result == ISC_R_SUCCESS) {
mname = NULL;
@@ -1438,8 +1436,9 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto addname;
if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset);
INSIST(sigrdataset == NULL ||
! dns_rdataset_isassociated(sigrdataset));
if (sigrdataset != NULL &&
dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
}
if (result == ISC_R_SUCCESS) {
mname = NULL;
@@ -1889,10 +1888,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto setcache;
if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset);
/*
* Negative cache entries don't have sigrdatasets.
*/
INSIST(! dns_rdataset_isassociated(sigrdataset));
if (dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
}
if (result == ISC_R_SUCCESS) {
/* Remember the result as a cache */

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: rbtdb.c,v 1.310.8.5 2011/06/08 23:02:42 each Exp $ */
/* $Id: rbtdb.c,v 1.310.8.5.4.1 2011/11/16 09:32:08 marka Exp $ */
/*! \file */
@@ -5053,7 +5053,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
rdataset);
if (need_headerupdate(found, search.now))
update = found;
if (foundsig != NULL) {
if (!NEGATIVE(found) && foundsig != NULL) {
bind_rdataset(search.rbtdb, node, foundsig, search.now,
sigrdataset);
if (need_headerupdate(foundsig, search.now))
@@ -5685,7 +5685,7 @@ cache_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
}
if (found != NULL) {
bind_rdataset(rbtdb, rbtnode, found, now, rdataset);
if (foundsig != NULL)
if (!NEGATIVE(found) && foundsig != NULL)
bind_rdataset(rbtdb, rbtnode, foundsig, now,
sigrdataset);
}

View File

@@ -1,4 +1,4 @@
# $Id: version,v 1.53.8.9 2011/08/24 02:08:26 marka Exp $
# $Id: version,v 1.53.8.9.6.1 2011/11/16 09:32:07 marka Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
@@ -6,5 +6,5 @@
MAJORVER=9
MINORVER=8
PATCHVER=1
RELEASETYPE=
RELEASEVER=
RELEASETYPE=-P
RELEASEVER=1