Source-Changes-HG archive

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

[src/netbsd-7]: src Pull up following revision(s) (requested by snj in ticket...



details:   https://anonhg.NetBSD.org/src/rev/41c021867716
branches:  netbsd-7
changeset: 800134:41c021867716
user:      sborrill <sborrill%NetBSD.org@localhost>
date:      Mon Feb 20 15:48:20 2017 +0000

description:
Pull up following revision(s) (requested by snj in ticket #1363):
        doc/3RDPARTY: patch
        external/bsd/bind/Makefile.inc: up to 1.25 via patch
        external/bsd/bind/dist/CHANGES: up to 1.25
        external/bsd/bind/dist/README: up to 1.13
        external/bsd/bind/dist/bin/named/query.c: up to 1.23
        external/bsd/bind/dist/bin/tests/system/dname/ans3/ans.pl: up to 1.1.1.1
        external/bsd/bind/dist/bin/tests/system/dname/ns1/root.db: up to 1.1.1.3
        external/bsd/bind/dist/bin/tests/system/dname/tests.sh: up to 1.1.1.5
        external/bsd/bind/dist/config.guess: up to 1.2
        external/bsd/bind/dist/config.sub: up to 1.2
        external/bsd/bind/dist/contrib/dnsperf-2.1.0.0-1/config.guess: up to 1.2
        external/bsd/bind/dist/contrib/dnsperf-2.1.0.0-1/config.sub: up to 1.2
        external/bsd/bind/dist/contrib/idn/idnkit-1.0-src/config.guess: up to 1.2
        external/bsd/bind/dist/contrib/idn/idnkit-1.0-src/config.sub: up to 1.2
        external/bsd/bind/dist/contrib/nslint-3.0a2/config.guess: up to 1.2
        external/bsd/bind/dist/contrib/nslint-3.0a2/config.sub: up to 1.2
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch01.html: up to 1.1.1.23
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch02.html: up to 1.1.1.20
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch03.html: up to 1.1.1.25
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch04.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch05.html: up to 1.1.1.26
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch06.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch07.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch08.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch09.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch10.html: up to 1.1.1.22
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch11.html: up to 1.1.1.11
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch12.html: up to 1.1.1.11
        external/bsd/bind/dist/doc/arm/Bv9ARM.ch13.html: up to 1.1.1.11
        external/bsd/bind/dist/doc/arm/Bv9ARM.html: up to 1.13
        external/bsd/bind/dist/doc/arm/Bv9ARM.pdf: up to 1.18
        external/bsd/bind/dist/doc/arm/man.arpaname.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.ddns-confgen.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.delv.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dig.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-checkds.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-coverage.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-dsfromkey.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-importkey.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-keyfromlabel.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-keygen.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-revoke.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-settime.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-signzone.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.dnssec-verify.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.genrandom.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.host.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.isc-hmac-fixup.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.lwresd.html: up to 1.1.1.5
        external/bsd/bind/dist/doc/arm/man.named-checkconf.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.named-checkzone.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.named-journalprint.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.named-rrchecker.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.named.conf.html: up to 1.1.1.5
        external/bsd/bind/dist/doc/arm/man.named.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.nsec3hash.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.nsupdate.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.rndc-confgen.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.rndc.conf.html: up to 1.13
        external/bsd/bind/dist/doc/arm/man.rndc.html: up to 1.13
        external/bsd/bind/dist/doc/arm/notes.html: up to 1.1.1.11
        external/bsd/bind/dist/doc/arm/notes.pdf: up to 1.1.1.11
        external/bsd/bind/dist/doc/arm/notes.xml: up to 1.1.1.11
        external/bsd/bind/dist/lib/dns/api: up to 1.13
        external/bsd/bind/dist/lib/dns/message.c: up to 1.22
        external/bsd/bind/dist/lib/dns/rdataset.c: up to 1.9
        external/bsd/bind/dist/lib/dns/resolver.c: up to 1.29
        external/bsd/bind/dist/srcid: up to 1.19
        external/bsd/bind/dist/unit/atf-src/admin/config.guess: up to 1.2
        external/bsd/bind/dist/unit/atf-src/admin/config.sub: up to 1.2
        external/bsd/bind/dist/version: up to 1.23
        external/bsd/bind/include/isc/platform.h: up to 1.22 via patch
Update BIND to 9.10.4-P6, fixing CVE-2017-3135.

diffstat:

 doc/3RDPARTY                                                   |     6 +-
 external/bsd/bind/Makefile.inc                                 |     6 +-
 external/bsd/bind/dist/CHANGES                                 |     8 +
 external/bsd/bind/dist/README                                  |     6 +
 external/bsd/bind/dist/bin/named/query.c                       |    63 +-
 external/bsd/bind/dist/bin/tests/system/dname/ans3/ans.pl      |    95 +
 external/bsd/bind/dist/bin/tests/system/dname/ns1/root.db      |     5 +-
 external/bsd/bind/dist/bin/tests/system/dname/tests.sh         |    25 +-
 external/bsd/bind/dist/config.guess                            |   330 +-
 external/bsd/bind/dist/config.sub                              |    89 +-
 external/bsd/bind/dist/contrib/dnsperf-2.1.0.0-1/config.guess  |  1341 ++++----
 external/bsd/bind/dist/contrib/dnsperf-2.1.0.0-1/config.sub    |   517 ++-
 external/bsd/bind/dist/contrib/idn/idnkit-1.0-src/config.guess |  1521 +++++----
 external/bsd/bind/dist/contrib/idn/idnkit-1.0-src/config.sub   |   761 +++-
 external/bsd/bind/dist/contrib/nslint-3.0a2/config.guess       |  1363 ++++----
 external/bsd/bind/dist/contrib/nslint-3.0a2/config.sub         |   576 ++-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch01.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch02.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch03.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch04.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch05.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch06.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch07.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch08.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch09.html                |    69 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch10.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch11.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch12.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.ch13.html                |     2 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.html                     |     6 +-
 external/bsd/bind/dist/doc/arm/Bv9ARM.pdf                      |   Bin 
 external/bsd/bind/dist/doc/arm/man.arpaname.html               |     2 +-
 external/bsd/bind/dist/doc/arm/man.ddns-confgen.html           |     2 +-
 external/bsd/bind/dist/doc/arm/man.delv.html                   |     2 +-
 external/bsd/bind/dist/doc/arm/man.dig.html                    |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-checkds.html         |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-coverage.html        |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-dsfromkey.html       |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-importkey.html       |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-keyfromlabel.html    |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-keygen.html          |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-revoke.html          |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-settime.html         |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-signzone.html        |     2 +-
 external/bsd/bind/dist/doc/arm/man.dnssec-verify.html          |     2 +-
 external/bsd/bind/dist/doc/arm/man.genrandom.html              |     2 +-
 external/bsd/bind/dist/doc/arm/man.host.html                   |     2 +-
 external/bsd/bind/dist/doc/arm/man.isc-hmac-fixup.html         |     2 +-
 external/bsd/bind/dist/doc/arm/man.lwresd.html                 |     2 +-
 external/bsd/bind/dist/doc/arm/man.named-checkconf.html        |     2 +-
 external/bsd/bind/dist/doc/arm/man.named-checkzone.html        |     2 +-
 external/bsd/bind/dist/doc/arm/man.named-journalprint.html     |     2 +-
 external/bsd/bind/dist/doc/arm/man.named-rrchecker.html        |     2 +-
 external/bsd/bind/dist/doc/arm/man.named.conf.html             |     2 +-
 external/bsd/bind/dist/doc/arm/man.named.html                  |     2 +-
 external/bsd/bind/dist/doc/arm/man.nsec3hash.html              |     2 +-
 external/bsd/bind/dist/doc/arm/man.nsupdate.html               |     2 +-
 external/bsd/bind/dist/doc/arm/man.rndc-confgen.html           |     2 +-
 external/bsd/bind/dist/doc/arm/man.rndc.conf.html              |     2 +-
 external/bsd/bind/dist/doc/arm/man.rndc.html                   |     2 +-
 external/bsd/bind/dist/doc/arm/notes.html                      |    65 +-
 external/bsd/bind/dist/doc/arm/notes.pdf                       |   Bin 
 external/bsd/bind/dist/doc/arm/notes.xml                       |    68 +-
 external/bsd/bind/dist/lib/dns/api                             |     2 +-
 external/bsd/bind/dist/lib/dns/message.c                       |     8 +-
 external/bsd/bind/dist/lib/dns/rdataset.c                      |     3 +-
 external/bsd/bind/dist/lib/dns/resolver.c                      |   152 +-
 external/bsd/bind/dist/srcid                                   |     2 +-
 external/bsd/bind/dist/unit/atf-src/admin/config.guess         |   700 ++--
 external/bsd/bind/dist/unit/atf-src/admin/config.sub           |   352 +-
 external/bsd/bind/dist/version                                 |     2 +-
 71 files changed, 4862 insertions(+), 3361 deletions(-)

diffs (truncated from 13860 to 300 lines):

diff -r 57ddf32d38d1 -r 41c021867716 doc/3RDPARTY
--- a/doc/3RDPARTY      Sun Feb 19 07:44:21 2017 +0000
+++ b/doc/3RDPARTY      Mon Feb 20 15:48:20 2017 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: 3RDPARTY,v 1.1145.2.35 2017/02/19 05:01:14 snj Exp $
+#      $NetBSD: 3RDPARTY,v 1.1145.2.36 2017/02/20 15:48:20 sborrill Exp $
 #
 # This file contains a list of the software that has been integrated into
 # NetBSD where we are not the primary maintainer.
@@ -113,8 +113,8 @@
 bc includes dc, both of which are in the NetBSD tree.
 
 Package:       bind [named and utils]
-Version:       9.10.4-P5
-Current Vers:  9.10.4-P5
+Version:       9.10.4-P6
+Current Vers:  9.10.4-P6
 Maintainer:    Paul Vixie <vixie%vix.com@localhost>
 Archive Site:  ftp://ftp.isc.org/isc/bind9/
 Home Page:     http://www.isc.org/software/bind/
diff -r 57ddf32d38d1 -r 41c021867716 external/bsd/bind/Makefile.inc
--- a/external/bsd/bind/Makefile.inc    Sun Feb 19 07:44:21 2017 +0000
+++ b/external/bsd/bind/Makefile.inc    Mon Feb 20 15:48:20 2017 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.21.2.4 2017/01/16 11:54:42 martin Exp $
+#      $NetBSD: Makefile.inc,v 1.21.2.5 2017/02/20 15:48:20 sborrill Exp $
 
 .if !defined(BIND9_MAKEFILE_INC)
 BIND9_MAKEFILE_INC=yes
@@ -98,9 +98,9 @@
 .if ${MKKERBEROS} != "no"
 .if !defined (LIB) || empty(LIB)
 LDADD+= -lgssapi -lheimntlm -lkrb5 -lhx509 -lheimbase \
-       -lcom_err  -lroken -lasn1 -lwind
+       -lcom_err  -lroken -lasn1 -lwind -lsqlite3
 DPADD+= ${LIBGSSAPI} ${LIBKRB5} ${LIBHX509} ${LIBHEIMNTLM} ${LIBHEIMBASE} \
-       ${LIBCOM_ERR} ${LIBROKEN} ${LIBASN1} ${LIBWIND}
+       ${LIBCOM_ERR} ${LIBROKEN} ${LIBASN1} ${LIBWIND} ${LIBSQLITE3}
 .else
 .for L in gssapi krb5 hx509 heimntlm heimbase com_err roken asn1 wind
 LIBDPLIBS+=    $L ${NETBSDSRCDIR}/crypto/external/bsd/heimdal/lib/lib$L
diff -r 57ddf32d38d1 -r 41c021867716 external/bsd/bind/dist/CHANGES
--- a/external/bsd/bind/dist/CHANGES    Sun Feb 19 07:44:21 2017 +0000
+++ b/external/bsd/bind/dist/CHANGES    Mon Feb 20 15:48:20 2017 +0000
@@ -1,3 +1,11 @@
+       --- 9.10.4-P6 released ---
+
+4558.  [bug]           Synthesised CNAME before matching DNAME was still
+                       being cached when it should have been.  [RT #44318]
+
+4557.  [security]      Combining dns64 and rpz can result in dereferencing
+                       a NULL pointer (read).  (CVE-2017-3135) [RT#44434]
+
        --- 9.10.4-P5 released ---
 
 4530.  [bug]           Change 4489 broke the handling of CNAME -> DNAME
diff -r 57ddf32d38d1 -r 41c021867716 external/bsd/bind/dist/README
--- a/external/bsd/bind/dist/README     Sun Feb 19 07:44:21 2017 +0000
+++ b/external/bsd/bind/dist/README     Mon Feb 20 15:48:20 2017 +0000
@@ -51,6 +51,12 @@
        For up-to-date release notes and errata, see
        http://www.isc.org/software/bind9/releasenotes
 
+BIND 9.10.4-P6
+
+       This version contains a fix for CVE-2017-3135, and a bug fix
+       for a regression in CNAME/DNAME caching that was introduced
+       in an earlier security release.
+
 BIND 9.10.4-P5
 
        This version contains fixes for CVE-2016-9131, CVE-2016-9147,
diff -r 57ddf32d38d1 -r 41c021867716 external/bsd/bind/dist/bin/named/query.c
--- a/external/bsd/bind/dist/bin/named/query.c  Sun Feb 19 07:44:21 2017 +0000
+++ b/external/bsd/bind/dist/bin/named/query.c  Mon Feb 20 15:48:20 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: query.c,v 1.16.2.5 2016/10/14 12:01:10 martin Exp $    */
+/*     $NetBSD: query.c,v 1.16.2.6 2017/02/20 15:48:20 sborrill Exp $  */
 
 /*
  * Copyright (C) 2004-2016  Internet Systems Consortium, Inc. ("ISC")
@@ -6245,7 +6245,7 @@
        dns_rpz_st_t *rpz_st;
        isc_boolean_t resuming;
        int line = -1;
-       isc_boolean_t dns64_exclude, dns64;
+       isc_boolean_t dns64_exclude, dns64, rpz;
        isc_boolean_t nxrewrite = ISC_FALSE;
        isc_boolean_t redirected = ISC_FALSE;
        dns_clientinfomethods_t cm;
@@ -6258,6 +6258,7 @@
        char mbuf[BUFSIZ];
        char qbuf[DNS_NAME_FORMATSIZE];
 #endif
+       dns_name_t *rpzqname;
 
        CTRACE(ISC_LOG_DEBUG(3), "query_find");
 
@@ -6283,7 +6284,7 @@
        zone = NULL;
        need_wildcardproof = ISC_FALSE;
        empty_wild = ISC_FALSE;
-       dns64_exclude = dns64 = ISC_FALSE;
+       dns64_exclude = dns64 = rpz = ISC_FALSE;
        options = 0;
        resuming = ISC_FALSE;
        is_zone = ISC_FALSE;
@@ -6473,6 +6474,7 @@
        authoritative = ISC_FALSE;
        version = NULL;
        need_wildcardproof = ISC_FALSE;
+       rpz = ISC_FALSE;
 
        if (client->view->checknames &&
            !dns_rdata_checkowner(client->query.qname,
@@ -6614,11 +6616,29 @@
        }
 
        /*
-        * Now look for an answer in the database.
-        */
-       result = dns_db_findext(db, client->query.qname, version, type,
+        * Now look for an answer in the database.  If this is a dns64
+        * AAAA lookup on a rpz database adjust the qname.
+        */
+       if (dns64 && rpz)
+               rpzqname = client->query.rpz_st->p_name;
+       else
+               rpzqname = client->query.qname;
+
+       result = dns_db_findext(db, rpzqname, version, type,
                                client->query.dboptions, client->now,
                                &node, fname, &cm, &ci, rdataset, sigrdataset);
+       /*
+        * Fixup fname and sigrdataset.
+        */
+       if (dns64 && rpz) {
+               isc_result_t rresult;
+
+               rresult = dns_name_copy(client->query.qname, fname, NULL);
+               RUNTIME_CHECK(rresult == ISC_R_SUCCESS);
+               if (sigrdataset != NULL &&
+                   dns_rdataset_isassociated(sigrdataset))
+                       dns_rdataset_disassociate(sigrdataset);
+       }
 
        if (!is_zone)
                dns_cache_updatestats(client->view->cache, result);
@@ -6848,10 +6868,12 @@
                        case DNS_RPZ_POLICY_NXDOMAIN:
                                result = DNS_R_NXDOMAIN;
                                nxrewrite = ISC_TRUE;
+                               rpz = ISC_TRUE;
                                break;
                        case DNS_RPZ_POLICY_NODATA:
                                result = DNS_R_NXRRSET;
                                nxrewrite = ISC_TRUE;
+                               rpz = ISC_TRUE;
                                break;
                        case DNS_RPZ_POLICY_RECORD:
                                result = rpz_st->m.result;
@@ -6871,6 +6893,7 @@
                                        rdataset->ttl = ISC_MIN(rdataset->ttl,
                                                                rpz_st->m.ttl);
                                }
+                               rpz = ISC_TRUE;
                                break;
                        case DNS_RPZ_POLICY_WILDCNAME:
                                result = dns_rdataset_first(rdataset);
@@ -6913,7 +6936,6 @@
                                                NS_CLIENTATTR_WANTAD);
                        client->message->flags &= ~DNS_MESSAGEFLAG_AD;
                        query_putrdataset(client, &sigrdataset);
-                       rpz_st->q.is_zone = is_zone;
                        is_zone = ISC_TRUE;
                        rpz_log_rewrite(client, ISC_FALSE, rpz_st->m.policy,
                                        rpz_st->m.type, zone, rpz_st->p_name);
@@ -7297,15 +7319,6 @@
                        rdataset = NULL;
                        sigrdataset = NULL;
                        type = qtype = dns_rdatatype_a;
-                       rpz_st = client->query.rpz_st;
-                       if (rpz_st != NULL) {
-                               /*
-                                * Arrange for RPZ rewriting of any A records.
-                                */
-                               if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0)
-                                       is_zone = rpz_st->q.is_zone;
-                               rpz_st_clear(client);
-                       }
                        dns64 = ISC_TRUE;
                        goto db_find;
                }
@@ -7620,15 +7633,6 @@
                        sigrdataset = NULL;
                        fname = NULL;
                        type = qtype = dns_rdatatype_a;
-                       rpz_st = client->query.rpz_st;
-                       if (rpz_st != NULL) {
-                               /*
-                                * Arrange for RPZ rewriting of any A records.
-                                */
-                               if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0)
-                                       is_zone = rpz_st->q.is_zone;
-                               rpz_st_clear(client);
-                       }
                        dns64 = ISC_TRUE;
                        goto db_find;
                }
@@ -8162,15 +8166,6 @@
                        rdataset = NULL;
                        sigrdataset = NULL;
                        type = qtype = dns_rdatatype_a;
-                       rpz_st = client->query.rpz_st;
-                       if (rpz_st != NULL) {
-                               /*
-                                * Arrange for RPZ rewriting of any A records.
-                                */
-                               if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0)
-                                       is_zone = rpz_st->q.is_zone;
-                               rpz_st_clear(client);
-                       }
                        dns64_exclude = dns64 = ISC_TRUE;
                        goto db_find;
                }
diff -r 57ddf32d38d1 -r 41c021867716 external/bsd/bind/dist/bin/tests/system/dname/ans3/ans.pl
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/bind/dist/bin/tests/system/dname/ans3/ans.pl Mon Feb 20 15:48:20 2017 +0000
@@ -0,0 +1,95 @@
+#!/usr/bin/env perl
+#
+# Copyright (C) 2014-2016  Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+use strict;
+use warnings;
+
+use IO::File;
+use Getopt::Long;
+use Net::DNS::Nameserver;
+
+my $pidf = new IO::File "ans.pid", "w" or die "cannot open pid file: $!";
+print $pidf "$$\n" or die "cannot write pid file: $!";
+$pidf->close or die "cannot close pid file: $!";
+sub rmpid { unlink "ans.pid"; exit 1; };
+
+$SIG{INT} = \&rmpid;
+$SIG{TERM} = \&rmpid;
+
+my $localaddr = "10.53.0.3";
+my $localport = 5300;
+my $verbose = 0;
+my $ttl = 60;
+my $zone = "example.broken";
+my $nsname = "ns3.$zone";
+my $synth = "synth-then-dname.$zone";
+my $synth2 = "synth2-then-dname.$zone";
+
+sub reply_handler {
+    my ($qname, $qclass, $qtype, $peerhost, $query, $conn) = @_;
+    my ($rcode, @ans, @auth, @add);
+
+    print ("request: $qname/$qtype\n");
+    STDOUT->flush();
+
+    if ($qname eq "example.broken") {
+        if ($qtype eq "SOA") {
+           my $rr = new Net::DNS::RR("$qname $ttl $qclass SOA . . 0 0 0 0 0");
+           push @ans, $rr;
+        } elsif ($qtype eq "NS") {
+           my $rr = new Net::DNS::RR("$qname $ttl $qclass NS $nsname");
+           push @ans, $rr;
+           $rr = new Net::DNS::RR("$nsname $ttl $qclass A $localaddr");
+           push @add, $rr;
+        }
+        $rcode = "NOERROR";
+    } elsif ($qname eq "cname-to-$synth2") {
+        my $rr = new Net::DNS::RR("$qname $ttl $qclass CNAME name.$synth2");
+       push @ans, $rr;
+        $rr = new Net::DNS::RR("name.$synth2 $ttl $qclass CNAME name");
+       push @ans, $rr;
+        $rr = new Net::DNS::RR("$synth2 $ttl $qclass DNAME .");
+       push @ans, $rr;
+       $rcode = "NOERROR";
+    } elsif ($qname eq "$synth" || $qname eq "$synth2") {
+       if ($qtype eq "DNAME") {
+           my $rr = new Net::DNS::RR("$qname $ttl $qclass DNAME .");
+           push @ans, $rr;
+       }
+       $rcode = "NOERROR";
+    } elsif ($qname eq "name.$synth") {
+       my $rr = new Net::DNS::RR("$qname $ttl $qclass CNAME name.");
+       push @ans, $rr;
+       $rr = new Net::DNS::RR("$synth $ttl $qclass DNAME .");
+       push @ans, $rr;
+       $rcode = "NOERROR";
+    } elsif ($qname eq "name.$synth2") {



Home | Main Index | Thread Index | Old Index