From b4dca44ad268a1f3ecca097e4076160957779048 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Thu, 27 Sep 2018 17:17:30 -0700 Subject: [PATCH] fix chaosnet address comparison --- CHANGES | 3 +++ bin/tests/system/auth/clean.sh | 2 +- bin/tests/system/auth/ns1/chaos.db | 21 +++++++++++++++++++++ bin/tests/system/auth/ns1/named.conf.in | 21 +++++++++++++++------ bin/tests/system/auth/tests.sh | 9 +++++++++ lib/dns/rdata/ch_3/a_1.c | 2 +- util/copyrights | 1 + 7 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 bin/tests/system/auth/ns1/chaos.db diff --git a/CHANGES b/CHANGES index d58c1882a1..ab92f4d4b6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5038. [bug] Chaosnet addresses were compared incorrectly. + [GL #562] + 5037. [func] "allow-recursion-on" and "allow-query-cache-on" each now default to the other if only one of them is set, in order to be more consistent with the way diff --git a/bin/tests/system/auth/clean.sh b/bin/tests/system/auth/clean.sh index a3efd21a4b..f44ecc4931 100644 --- a/bin/tests/system/auth/clean.sh +++ b/bin/tests/system/auth/clean.sh @@ -13,4 +13,4 @@ rm -f */named.conf rm -f dig.out.test* rm -f ns2/example.com.bk rm -f ns2/example.net.bk -rm -f ns*/managed-keys.bind* +rm -f ns*/managed-keys.bind* ns*/*mkeys* diff --git a/bin/tests/system/auth/ns1/chaos.db b/bin/tests/system/auth/ns1/chaos.db new file mode 100644 index 0000000000..758f4f6ea1 --- /dev/null +++ b/bin/tests/system/auth/ns1/chaos.db @@ -0,0 +1,21 @@ +; Copyright (C) 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/. +; +; See the COPYRIGHT file distributed with this work for additional +; information regarding copyright ownership. + +$TTL 300 ; 5 minutes +@ CH SOA ns root ( + 2018010100 ; serial + 1800 ; refresh (30 minutes) + 1800 ; retry (30 minutes) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) + NS ns +ns A ch-addr.net. 1001 +test A ch-addr.net. 1002 + A ch-addr.net. 1003 diff --git a/bin/tests/system/auth/ns1/named.conf.in b/bin/tests/system/auth/ns1/named.conf.in index f239e15a73..1cddc49403 100644 --- a/bin/tests/system/auth/ns1/named.conf.in +++ b/bin/tests/system/auth/ns1/named.conf.in @@ -21,12 +21,21 @@ options { notify yes; }; -zone example.net { - type master; - file "example.net.db"; +view main in { + zone example.net { + type master; + file "example.net.db"; + }; + + zone example.com { + type master; + file "example.com.db"; + }; }; -zone example.com { - type master; - file "example.com.db"; +view alt chaos { + zone example.chaos chaos { + type master; + file "chaos.db"; + }; }; diff --git a/bin/tests/system/auth/tests.sh b/bin/tests/system/auth/tests.sh index 348fcf8975..cc47c39b92 100644 --- a/bin/tests/system/auth/tests.sh +++ b/bin/tests/system/auth/tests.sh @@ -128,5 +128,14 @@ grep "a.example.com.*A.*10.53.0.1" dig.out.test$n > /dev/null || ret=1 [ $ret -eq 0 ] || echo_i "failed" status=`expr $status + $ret` +n=`expr $n + 1` +echo_i "check that CHAOS addresses are compared correctly ($n)" +ret=0 +$DIG $DIGOPTS @10.53.0.1 +noall +answer ch test.example.chaos > dig.out.test$n +lines=`wc -l < dig.out.test$n` +[ ${lines:-0} -eq 2 ] || ret=1 +[ $ret -eq 0 ] || echo_i "failed" +status=`expr $status + $ret` + echo_i "exit status: $status" [ $status -eq 0 ] || exit 1 diff --git a/lib/dns/rdata/ch_3/a_1.c b/lib/dns/rdata/ch_3/a_1.c index a1b571fa14..94cae92c3c 100644 --- a/lib/dns/rdata/ch_3/a_1.c +++ b/lib/dns/rdata/ch_3/a_1.c @@ -179,7 +179,7 @@ compare_ch_a(ARGS_COMPARE) { if (order != 0) return (order); - order = memcmp(rdata1->data, rdata2->data, 2); + order = memcmp(region1.base, region2.base, 2); if (order != 0) order = (order < 0) ? -1 : 1; return (order); diff --git a/util/copyrights b/util/copyrights index 8b942e52a7..bd7e66e020 100644 --- a/util/copyrights +++ b/util/copyrights @@ -451,6 +451,7 @@ ./bin/tests/system/allow-query/tests.sh SH 2010,2012,2013,2016,2018 ./bin/tests/system/ans.pl PERL 2011,2012,2014,2016,2017,2018 ./bin/tests/system/auth/clean.sh SH 2018 +./bin/tests/system/auth/ns1/chaos.db ZONE 2018 ./bin/tests/system/auth/ns1/example.com.db ZONE 2018 ./bin/tests/system/auth/ns1/example.net.db ZONE 2018 ./bin/tests/system/auth/ns1/named.conf.in CONF-C 2018