]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3645. [protocol] Use case sensitive compression when responding to
authorMark Andrews <marka@isc.org>
Thu, 5 Sep 2013 02:22:34 +0000 (12:22 +1000)
committerMark Andrews <marka@isc.org>
Thu, 5 Sep 2013 02:22:34 +0000 (12:22 +1000)
                        queries. [RT #34737]

CHANGES
bin/named/client.c
bin/tests/system/cacheclean/tests.sh
bin/tests/system/case/clean.sh [new file with mode: 0644]
bin/tests/system/case/ns1/example.db [new file with mode: 0644]
bin/tests/system/case/ns1/named.conf [new file with mode: 0644]
bin/tests/system/case/tests.sh [new file with mode: 0644]
bin/tests/system/conf.sh.in
bin/tests/system/digcomp.pl
bin/tests/system/glue/tests.sh

diff --git a/CHANGES b/CHANGES
index 5c015501b2ae8cfdf4d02c42e883b4d5f49f70f9..27abb40387ef251991a121f1419ab57c8de18093 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
        --- 9.10.0a1 released --
 
+3645.  [protocol]      Use case sensitive compression when responding to
+                       queries. [RT #34737]
+
 3644.  [protocol]      Check that EDNS subnet client options are well formed.
                        [RT #34718]
 
index 3a999cdab06eda90a265fc97c615b7cdb4c96377..1af60a625016c9ef36b0b988cf1d05bdec333608 100644 (file)
@@ -994,6 +994,7 @@ client_send(ns_client_t *client) {
        result = dns_compress_init(&cctx, -1, client->mctx);
        if (result != ISC_R_SUCCESS)
                goto done;
+       dns_compress_setsensitive(&cctx, ISC_TRUE);
        cleanup_cctx = ISC_TRUE;
 
        result = dns_message_renderbegin(client->message, &cctx, &buffer);
index 3a4ae1fda25e97b992b1bd0c685275ede242d943..6eaee3d785735afb0acade8bd851c9f3b0220ee4 100644 (file)
@@ -88,7 +88,7 @@ echo "I:check correctness of routine cache cleaning"
 $DIG $DIGOPTS -f dig.batch > dig.out.ns2 || status=1
 grep ";" dig.out.ns2
 
-$PERL ../digcomp.pl dig.out.ns2 knowngood.dig.out || status=1
+$PERL ../digcomp.pl --lc dig.out.ns2 knowngood.dig.out || status=1
 
 echo "I:reset and check that records are correctly cached initially"
 ret=0
diff --git a/bin/tests/system/case/clean.sh b/bin/tests/system/case/clean.sh
new file mode 100644 (file)
index 0000000..40fc402
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# Copyright (C) 2013  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+rm -f dig.n1.test1
diff --git a/bin/tests/system/case/ns1/example.db b/bin/tests/system/case/ns1/example.db
new file mode 100644 (file)
index 0000000..961315e
--- /dev/null
@@ -0,0 +1,27 @@
+; Copyright (C) 2013  Internet Systems Consortium, Inc. ("ISC")
+;
+; Permission to use, copy, modify, and/or distribute this software for any
+; purpose with or without fee is hereby granted, provided that the above
+; copyright notice and this permission notice appear in all copies.
+;
+; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+; AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+; PERFORMANCE OF THIS SOFTWARE.
+
+
+$TTL 300       ; 5 minutes
+@                      IN SOA  mname1. . (
+                               2000042407 ; serial
+                               20         ; refresh (20 seconds)
+                               20         ; retry (20 seconds)
+                               1814400    ; expire (3 weeks)
+                               3600       ; minimum (1 hour)
+                               )
+                       NS      ns1
+ns1                    A       10.53.0.1
+@                      MX      0 mail.eXaMpLe.
+mAiL                   A       10.53.0.1
diff --git a/bin/tests/system/case/ns1/named.conf b/bin/tests/system/case/ns1/named.conf
new file mode 100644 (file)
index 0000000..2fcc608
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+controls { /* empty */ };
+
+options {
+       query-source address 10.53.0.1;
+       notify-source 10.53.0.1;
+       transfer-source 10.53.0.1;
+       port 5300;
+       pid-file "named.pid";
+       listen-on { 10.53.0.1; };
+       listen-on-v6 { none; };
+       recursion no;
+       notify yes;
+       ixfr-from-differences yes;
+       check-integrity no;
+};
+
+zone "example" {
+       type master;
+       file "example.db";
+};
diff --git a/bin/tests/system/case/tests.sh b/bin/tests/system/case/tests.sh
new file mode 100644 (file)
index 0000000..d9c159b
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Copyright (C) 2013  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+DIGOPTS="+tcp +nosea +nostat +noquest +nocomm +nocmd"
+
+status=0
+n=0
+
+n=`expr $n + 1`
+echo "I:testing case sensitive responses ($n)"
+ret=0
+$DIG $DIGOPTS mx example. @10.53.0.1 -p 5300 > dig.n1.test$n
+grep "0.mail.eXaMpLe" dig.n1.test$n > /dev/null || ret=1
+grep "mAiL.example" dig.n1.test$n > /dev/null || ret=1
+test $ret -eq 0 || echo "I:failed"
+status=`expr $status + $ret`
+
+echo "I:exit status: $status"
+exit $status
index b15853d7686ba47d7f90a97df6111300aabefae2..f2fb98caa701934b0fc724165b189db72ffe8fac 100644 (file)
@@ -60,7 +60,7 @@ RESOLVE=$TOP/lib/samples/resolve
 # load on the machine to make it unusable to other users.
 # v6synth
 SUBDIRS="acl additional allow_query addzone autosign builtin
-        cacheclean checkconf @CHECKDS@ checknames checkzone @COVERAGE@
+        cacheclean case checkconf @CHECKDS@ checknames checkzone @COVERAGE@
          database dlv dlvauto dlz dlzexternal dlzredir dname dns64 dnssec
         dsdigest dscp ecdsa formerr forward glue gost ixfr inline limits
         logfileconfig lwresd masterfile masterformat metadata
index 28ee067d3327b1c1541b5d10940d47b1cffe90ec..e2ff72e9bf622c31203b43719599d32d9b85638b 100644 (file)
 # Ignore "unimportant" differences, like ordering of NS lines, TTL's,
 # etc...
 
+$lc = 0;
+if ($ARGV[0] eq "--lc") {
+       $lc = 1;
+       shift;
+}
 $file1 = $ARGV[0];
 $file2 = $ARGV[1];
 
@@ -42,6 +47,10 @@ while (<FILE1>) {
                $class = $2;
                $type = $3;
                $value = $4;
+               if ($lc) {
+                       $name = lc($name);
+                       $value = lc($value);
+               }
                if ($type eq "SOA") {
                        $firstname = $name if ($firstname eq "");
                        if ($name eq $firstname) {
@@ -73,6 +82,10 @@ while (<FILE2>) {
                $class = $2;
                $type = $3;
                $value = $4;
+               if ($lc) {
+                       $name = lc($name);
+                       $value = lc($value);
+               }
                if (($name eq $firstname) && ($type eq "SOA")) {
                        $count--;
                        $name = "$name$count";
index 32181ec9e0c50cbbc4c7552134a42acf0a492fb2..b6cbd7e40bdec9346bf6d893b170f9d72da33e61 100644 (file)
@@ -28,7 +28,7 @@ status=0
 
 echo "I:testing that a ccTLD referral gets a full glue set from the root zone"
 $DIG +norec @10.53.0.1 -p 5300 foo.bar.fi. A >dig.out || status=1
-$PERL ../digcomp.pl fi.good dig.out || status=1
+$PERL ../digcomp.pl --lc fi.good dig.out || status=1
 
 echo "I:testing that we find glue A RRs we are authoritative for"
 $DIG +norec @10.53.0.1 -p 5300 foo.bar.xx. a >dig.out || status=1