Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/bsd/bind/dist patch for: https://www.isc.org/softwa...



details:   https://anonhg.NetBSD.org/src/rev/6eac7c088d55
branches:  trunk
changeset: 771249:6eac7c088d55
user:      christos <christos%NetBSD.org@localhost>
date:      Wed Nov 16 17:28:10 2011 +0000

description:
patch for: https://www.isc.org/software/bind/advisories/cve-2011-tbd

diffstat:

 external/bsd/bind/dist/bin/named/query.c |  21 +++++++++------------
 external/bsd/bind/dist/lib/dns/rbtdb.c   |   6 +++---
 2 files changed, 12 insertions(+), 15 deletions(-)

diffs (76 lines):

diff -r 08b8436bfa07 -r 6eac7c088d55 external/bsd/bind/dist/bin/named/query.c
--- a/external/bsd/bind/dist/bin/named/query.c  Wed Nov 16 17:26:24 2011 +0000
+++ b/external/bsd/bind/dist/bin/named/query.c  Wed Nov 16 17:28:10 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: query.c,v 1.6 2011/09/11 18:55:27 christos Exp $       */
+/*     $NetBSD: query.c,v 1.7 2011/11/16 17:28:10 christos Exp $       */
 
 /*
  * Copyright (C) 2004-2011  Internet Systems Consortium, Inc. ("ISC")
@@ -1395,11 +1395,9 @@
                        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;
@@ -1440,8 +1438,9 @@
                        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;
@@ -1891,10 +1890,8 @@
                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 */
diff -r 08b8436bfa07 -r 6eac7c088d55 external/bsd/bind/dist/lib/dns/rbtdb.c
--- a/external/bsd/bind/dist/lib/dns/rbtdb.c    Wed Nov 16 17:26:24 2011 +0000
+++ b/external/bsd/bind/dist/lib/dns/rbtdb.c    Wed Nov 16 17:28:10 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rbtdb.c,v 1.10 2011/09/11 18:55:36 christos Exp $      */
+/*     $NetBSD: rbtdb.c,v 1.11 2011/11/16 17:28:10 christos Exp $      */
 
 /*
  * Copyright (C) 2004-2011  Internet Systems Consortium, Inc. ("ISC")
@@ -5055,7 +5055,7 @@
                              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))
@@ -5687,7 +5687,7 @@
        }
        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);
        }



Home | Main Index | Thread Index | Old Index