]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
pullup:
authorMark Andrews <marka@isc.org>
Tue, 18 Feb 2003 03:32:01 +0000 (03:32 +0000)
committerMark Andrews <marka@isc.org>
Tue, 18 Feb 2003 03:32:01 +0000 (03:32 +0000)
1381.   [bug]           named failed to correctly process answers that
                        contained DNAME records where the resulting CNAME
                        resulted in a negative answer.

CHANGES
lib/dns/resolver.c

diff --git a/CHANGES b/CHANGES
index 05365c4326c9330f1612ee851a19ccf4bfcf3830..8a25f34b0fb3de1929154210572bedf16b442194 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -8,6 +8,10 @@
 
 1382.  [bug]           make install failed with --enable-libbind. [RT #3656]
 
+1381.  [bug]           named failed to correctly process answers that
+                       contained DNAME records where the resulting CNAME
+                       resulted in a negative answer.
+
        --- 9.2.2rc1 released ---
 
 1357.  [bug]           --enable-libbind would fail when not built in the
index 6c7dc6933b0ca73ccf863e8a0da3340fa1ed1656..e008b9d54b44710ae50eeaff0eae8c50310bf00d 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: resolver.c,v 1.218.2.12.4.3 2003/02/18 03:20:58 marka Exp $ */
+/* $Id: resolver.c,v 1.218.2.12.4.4 2003/02/18 03:32:01 marka Exp $ */
 
 #include <config.h>
 
@@ -3869,8 +3869,8 @@ answer_response(fetchctx_t *fctx) {
                        for (rdataset = ISC_LIST_HEAD(name->list);
                             rdataset != NULL;
                             rdataset = ISC_LIST_NEXT(rdataset, link)) {
+                               isc_boolean_t found_dname = ISC_FALSE;
                                found = ISC_FALSE;
-                               want_chaining = ISC_FALSE;
                                aflag = 0;
                                if (rdataset->type == dns_rdatatype_dname) {
                                        /*
@@ -3897,6 +3897,8 @@ answer_response(fetchctx_t *fctx) {
                                                want_chaining = ISC_FALSE;
                                        } else if (result != ISC_R_SUCCESS)
                                                return (result);
+                                       else
+                                               found_dname = ISC_TRUE;
                                } else if (rdataset->type == dns_rdatatype_sig
                                           && rdataset->covers ==
                                           dns_rdatatype_dname) {
@@ -3942,7 +3944,7 @@ answer_response(fetchctx_t *fctx) {
                                        /*
                                         * DNAME chaining.
                                         */
-                                       if (want_chaining) {
+                                       if (found_dname) {
                                                /*
                                                 * Copy the the dname into the
                                                 * qname fixed name.