>> So I'm sitting here scrathing my head even more confused than
>> usual.  Anyone have any insights?
>
> The SOA has the wrong owner name. Bind followed a referral for
> map.media6degrees.com but the SOA wrongly says the zone apex is
> media6degrees.com.
>
> https://lists.isc.org/pipermail/bind-users/2009-December/078403.html
> http://fanf.livejournal.com/107721.html

Ah!  OK, then let me offer the following patch to reduce
confusion among those who might inadvertently start following my
tracks:

--- lib/dns/resolver.c.orig     2012-08-24 04:40:57.000000000 +0000
+++ lib/dns/resolver.c
@@ -5418,10 +5418,10 @@ noanswer_response(fetchctx_t *fctx, dns_
 {
        isc_result_t result;
        dns_message_t *message;
-       dns_name_t *name, *qname, *ns_name, *soa_name, *ds_name;
+       dns_name_t *name, *qname, *ns_name, *soa_name, *ds_name, *save_name;
        dns_rdataset_t *rdataset, *ns_rdataset;
        isc_boolean_t aa, negative_response;
-       dns_rdatatype_t type;
+       dns_rdatatype_t type, save_type;
        dns_section_t section;
 
        FCTXTRACE("noanswer_response");
@@ -5488,6 +5488,8 @@ noanswer_response(fetchctx_t *fctx, dns_
        ns_rdataset = NULL;
        soa_name = NULL;
        ds_name = NULL;
+       save_name = NULL;
+       save_type = dns_rdatatype_none;
        result = dns_message_firstname(message, section);
        while (result == ISC_R_SUCCESS) {
                name = NULL;
@@ -5580,6 +5582,9 @@ noanswer_response(fetchctx_t *fctx, dns_
                                                        dns_trust_additional;
                                }
                        }
+               } else {
+                       save_name = name;
+                       save_type = ISC_LIST_HEAD(name->list)->type;
                }
                result = dns_message_nextname(message, section);
                if (result == ISC_R_NOMORE)
@@ -5721,7 +5726,35 @@ noanswer_response(fetchctx_t *fctx, dns_
                        /*
                         * The responder is insane.
                         */
-                       log_formerr(fctx, "invalid response");
+                       if (save_name == NULL) {
+                               log_formerr(fctx, "invalid response");
+                               return (DNS_R_FORMERR);
+                       }
+                       if (!dns_name_issubdomain(save_name, &fctx->domain)) {
+                               char nbuf[DNS_NAME_FORMATSIZE];
+                               char dbuf[DNS_NAME_FORMATSIZE];
+                               char tbuf[DNS_RDATATYPE_FORMATSIZE];
+                               const char *s;
+
+                               dns_rdatatype_format(save_type,
+                                       tbuf, sizeof(tbuf));
+                               dns_name_format(save_name, nbuf,
+                                       sizeof(nbuf));
+                               dns_name_format(&fctx->domain, dbuf,
+                                       sizeof(dbuf));
+
+                               if (section == DNS_SECTION_ANSWER)
+                                       s = "answer";
+                               else
+                                       s = "authority";
+
+                               log_formerr(fctx, "Name %s (%s) in %s section"
+                                               " not subdomain of"
+                                               " known-to-be zone %s --"
+                                               " invalid response",
+                                               nbuf, tbuf, s, dbuf);
+                       } else
+                               log_formerr(fctx, "invalid response");
                        return (DNS_R_FORMERR);
                }
        }

- Havard
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
from this list

bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to