]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a test for not caching large number of RRsets
authorOndřej Surý <ondrej@isc.org>
Tue, 28 May 2024 13:23:24 +0000 (15:23 +0200)
committerOndřej Surý <ondrej@isc.org>
Mon, 29 Jul 2024 10:27:25 +0000 (12:27 +0200)
Send a recursive query for a large number of RRsets, which should
fail when using the default max-types-per-name setting of 100, but
succeed when the cap is disabled.

(cherry picked from commit 7e4530f847c8dc541c5e5bf9f790deed520aaa16)

bin/tests/system/reclimit/ns1/big.db
bin/tests/system/reclimit/ns1/named.conf.in
bin/tests/system/reclimit/ns3/named5.conf.in
bin/tests/system/reclimit/ns3/named6.conf.in [new file with mode: 0644]
bin/tests/system/reclimit/tests.sh

index bddceb76e78d81c3a6080bdbc88e7e4eea21d318..c256594c78673712a458c963231404f086dc1e6c 100644 (file)
@@ -2513,3 +2513,259 @@ biganswer.big.  60      IN      A       10.10.50.47
 biganswer.big. 60      IN      A       10.10.50.48
 biganswer.big. 60      IN      A       10.10.50.49
 biganswer.big. 60      IN      A       10.10.50.50
+
+manytypes.big. IN      TYPE65280       \# 0
+manytypes.big. IN      TYPE65281       \# 0
+manytypes.big. IN      TYPE65282       \# 0
+manytypes.big. IN      TYPE65283       \# 0
+manytypes.big. IN      TYPE65284       \# 0
+manytypes.big. IN      TYPE65285       \# 0
+manytypes.big. IN      TYPE65286       \# 0
+manytypes.big. IN      TYPE65287       \# 0
+manytypes.big. IN      TYPE65288       \# 0
+manytypes.big. IN      TYPE65289       \# 0
+manytypes.big. IN      TYPE65290       \# 0
+manytypes.big. IN      TYPE65291       \# 0
+manytypes.big. IN      TYPE65292       \# 0
+manytypes.big. IN      TYPE65293       \# 0
+manytypes.big. IN      TYPE65294       \# 0
+manytypes.big. IN      TYPE65295       \# 0
+manytypes.big. IN      TYPE65296       \# 0
+manytypes.big. IN      TYPE65297       \# 0
+manytypes.big. IN      TYPE65298       \# 0
+manytypes.big. IN      TYPE65299       \# 0
+manytypes.big. IN      TYPE65300       \# 0
+manytypes.big. IN      TYPE65301       \# 0
+manytypes.big. IN      TYPE65302       \# 0
+manytypes.big. IN      TYPE65303       \# 0
+manytypes.big. IN      TYPE65304       \# 0
+manytypes.big. IN      TYPE65305       \# 0
+manytypes.big. IN      TYPE65306       \# 0
+manytypes.big. IN      TYPE65307       \# 0
+manytypes.big. IN      TYPE65308       \# 0
+manytypes.big. IN      TYPE65309       \# 0
+manytypes.big. IN      TYPE65310       \# 0
+manytypes.big. IN      TYPE65311       \# 0
+manytypes.big. IN      TYPE65312       \# 0
+manytypes.big. IN      TYPE65313       \# 0
+manytypes.big. IN      TYPE65314       \# 0
+manytypes.big. IN      TYPE65315       \# 0
+manytypes.big. IN      TYPE65316       \# 0
+manytypes.big. IN      TYPE65317       \# 0
+manytypes.big. IN      TYPE65318       \# 0
+manytypes.big. IN      TYPE65319       \# 0
+manytypes.big. IN      TYPE65320       \# 0
+manytypes.big. IN      TYPE65321       \# 0
+manytypes.big. IN      TYPE65322       \# 0
+manytypes.big. IN      TYPE65323       \# 0
+manytypes.big. IN      TYPE65324       \# 0
+manytypes.big. IN      TYPE65325       \# 0
+manytypes.big. IN      TYPE65326       \# 0
+manytypes.big. IN      TYPE65327       \# 0
+manytypes.big. IN      TYPE65328       \# 0
+manytypes.big. IN      TYPE65329       \# 0
+manytypes.big. IN      TYPE65330       \# 0
+manytypes.big. IN      TYPE65331       \# 0
+manytypes.big. IN      TYPE65332       \# 0
+manytypes.big. IN      TYPE65333       \# 0
+manytypes.big. IN      TYPE65334       \# 0
+manytypes.big. IN      TYPE65335       \# 0
+manytypes.big. IN      TYPE65336       \# 0
+manytypes.big. IN      TYPE65337       \# 0
+manytypes.big. IN      TYPE65338       \# 0
+manytypes.big. IN      TYPE65339       \# 0
+manytypes.big. IN      TYPE65340       \# 0
+manytypes.big. IN      TYPE65341       \# 0
+manytypes.big. IN      TYPE65342       \# 0
+manytypes.big. IN      TYPE65343       \# 0
+manytypes.big. IN      TYPE65344       \# 0
+manytypes.big. IN      TYPE65345       \# 0
+manytypes.big. IN      TYPE65346       \# 0
+manytypes.big. IN      TYPE65347       \# 0
+manytypes.big. IN      TYPE65348       \# 0
+manytypes.big. IN      TYPE65349       \# 0
+manytypes.big. IN      TYPE65350       \# 0
+manytypes.big. IN      TYPE65351       \# 0
+manytypes.big. IN      TYPE65352       \# 0
+manytypes.big. IN      TYPE65353       \# 0
+manytypes.big. IN      TYPE65354       \# 0
+manytypes.big. IN      TYPE65355       \# 0
+manytypes.big. IN      TYPE65356       \# 0
+manytypes.big. IN      TYPE65357       \# 0
+manytypes.big. IN      TYPE65358       \# 0
+manytypes.big. IN      TYPE65359       \# 0
+manytypes.big. IN      TYPE65360       \# 0
+manytypes.big. IN      TYPE65361       \# 0
+manytypes.big. IN      TYPE65362       \# 0
+manytypes.big. IN      TYPE65363       \# 0
+manytypes.big. IN      TYPE65364       \# 0
+manytypes.big. IN      TYPE65365       \# 0
+manytypes.big. IN      TYPE65366       \# 0
+manytypes.big. IN      TYPE65367       \# 0
+manytypes.big. IN      TYPE65368       \# 0
+manytypes.big. IN      TYPE65369       \# 0
+manytypes.big. IN      TYPE65370       \# 0
+manytypes.big. IN      TYPE65371       \# 0
+manytypes.big. IN      TYPE65372       \# 0
+manytypes.big. IN      TYPE65373       \# 0
+manytypes.big. IN      TYPE65374       \# 0
+manytypes.big. IN      TYPE65375       \# 0
+manytypes.big. IN      TYPE65376       \# 0
+manytypes.big. IN      TYPE65377       \# 0
+manytypes.big. IN      TYPE65378       \# 0
+manytypes.big. IN      TYPE65379       \# 0
+manytypes.big. IN      TYPE65380       \# 0
+manytypes.big. IN      TYPE65381       \# 0
+manytypes.big. IN      TYPE65382       \# 0
+manytypes.big. IN      TYPE65383       \# 0
+manytypes.big. IN      TYPE65384       \# 0
+manytypes.big. IN      TYPE65385       \# 0
+manytypes.big. IN      TYPE65386       \# 0
+manytypes.big. IN      TYPE65387       \# 0
+manytypes.big. IN      TYPE65388       \# 0
+manytypes.big. IN      TYPE65389       \# 0
+manytypes.big. IN      TYPE65390       \# 0
+manytypes.big. IN      TYPE65391       \# 0
+manytypes.big. IN      TYPE65392       \# 0
+manytypes.big. IN      TYPE65393       \# 0
+manytypes.big. IN      TYPE65394       \# 0
+manytypes.big. IN      TYPE65395       \# 0
+manytypes.big. IN      TYPE65396       \# 0
+manytypes.big. IN      TYPE65397       \# 0
+manytypes.big. IN      TYPE65398       \# 0
+manytypes.big. IN      TYPE65399       \# 0
+manytypes.big. IN      TYPE65400       \# 0
+manytypes.big. IN      TYPE65401       \# 0
+manytypes.big. IN      TYPE65402       \# 0
+manytypes.big. IN      TYPE65403       \# 0
+manytypes.big. IN      TYPE65404       \# 0
+manytypes.big. IN      TYPE65405       \# 0
+manytypes.big. IN      TYPE65406       \# 0
+manytypes.big. IN      TYPE65407       \# 0
+manytypes.big. IN      TYPE65408       \# 0
+manytypes.big. IN      TYPE65409       \# 0
+manytypes.big. IN      TYPE65410       \# 0
+manytypes.big. IN      TYPE65411       \# 0
+manytypes.big. IN      TYPE65412       \# 0
+manytypes.big. IN      TYPE65413       \# 0
+manytypes.big. IN      TYPE65414       \# 0
+manytypes.big. IN      TYPE65415       \# 0
+manytypes.big. IN      TYPE65416       \# 0
+manytypes.big. IN      TYPE65417       \# 0
+manytypes.big. IN      TYPE65418       \# 0
+manytypes.big. IN      TYPE65419       \# 0
+manytypes.big. IN      TYPE65420       \# 0
+manytypes.big. IN      TYPE65421       \# 0
+manytypes.big. IN      TYPE65422       \# 0
+manytypes.big. IN      TYPE65423       \# 0
+manytypes.big. IN      TYPE65424       \# 0
+manytypes.big. IN      TYPE65425       \# 0
+manytypes.big. IN      TYPE65426       \# 0
+manytypes.big. IN      TYPE65427       \# 0
+manytypes.big. IN      TYPE65428       \# 0
+manytypes.big. IN      TYPE65429       \# 0
+manytypes.big. IN      TYPE65430       \# 0
+manytypes.big. IN      TYPE65431       \# 0
+manytypes.big. IN      TYPE65432       \# 0
+manytypes.big. IN      TYPE65433       \# 0
+manytypes.big. IN      TYPE65434       \# 0
+manytypes.big. IN      TYPE65435       \# 0
+manytypes.big. IN      TYPE65436       \# 0
+manytypes.big. IN      TYPE65437       \# 0
+manytypes.big. IN      TYPE65438       \# 0
+manytypes.big. IN      TYPE65439       \# 0
+manytypes.big. IN      TYPE65440       \# 0
+manytypes.big. IN      TYPE65441       \# 0
+manytypes.big. IN      TYPE65442       \# 0
+manytypes.big. IN      TYPE65443       \# 0
+manytypes.big. IN      TYPE65444       \# 0
+manytypes.big. IN      TYPE65445       \# 0
+manytypes.big. IN      TYPE65446       \# 0
+manytypes.big. IN      TYPE65447       \# 0
+manytypes.big. IN      TYPE65448       \# 0
+manytypes.big. IN      TYPE65449       \# 0
+manytypes.big. IN      TYPE65450       \# 0
+manytypes.big. IN      TYPE65451       \# 0
+manytypes.big. IN      TYPE65452       \# 0
+manytypes.big. IN      TYPE65453       \# 0
+manytypes.big. IN      TYPE65454       \# 0
+manytypes.big. IN      TYPE65455       \# 0
+manytypes.big. IN      TYPE65456       \# 0
+manytypes.big. IN      TYPE65457       \# 0
+manytypes.big. IN      TYPE65458       \# 0
+manytypes.big. IN      TYPE65459       \# 0
+manytypes.big. IN      TYPE65460       \# 0
+manytypes.big. IN      TYPE65461       \# 0
+manytypes.big. IN      TYPE65462       \# 0
+manytypes.big. IN      TYPE65463       \# 0
+manytypes.big. IN      TYPE65464       \# 0
+manytypes.big. IN      TYPE65465       \# 0
+manytypes.big. IN      TYPE65466       \# 0
+manytypes.big. IN      TYPE65467       \# 0
+manytypes.big. IN      TYPE65468       \# 0
+manytypes.big. IN      TYPE65469       \# 0
+manytypes.big. IN      TYPE65470       \# 0
+manytypes.big. IN      TYPE65471       \# 0
+manytypes.big. IN      TYPE65472       \# 0
+manytypes.big. IN      TYPE65473       \# 0
+manytypes.big. IN      TYPE65474       \# 0
+manytypes.big. IN      TYPE65475       \# 0
+manytypes.big. IN      TYPE65476       \# 0
+manytypes.big. IN      TYPE65477       \# 0
+manytypes.big. IN      TYPE65478       \# 0
+manytypes.big. IN      TYPE65479       \# 0
+manytypes.big. IN      TYPE65480       \# 0
+manytypes.big. IN      TYPE65481       \# 0
+manytypes.big. IN      TYPE65482       \# 0
+manytypes.big. IN      TYPE65483       \# 0
+manytypes.big. IN      TYPE65484       \# 0
+manytypes.big. IN      TYPE65485       \# 0
+manytypes.big. IN      TYPE65486       \# 0
+manytypes.big. IN      TYPE65487       \# 0
+manytypes.big. IN      TYPE65488       \# 0
+manytypes.big. IN      TYPE65489       \# 0
+manytypes.big. IN      TYPE65490       \# 0
+manytypes.big. IN      TYPE65491       \# 0
+manytypes.big. IN      TYPE65492       \# 0
+manytypes.big. IN      TYPE65493       \# 0
+manytypes.big. IN      TYPE65494       \# 0
+manytypes.big. IN      TYPE65495       \# 0
+manytypes.big. IN      TYPE65496       \# 0
+manytypes.big. IN      TYPE65497       \# 0
+manytypes.big. IN      TYPE65498       \# 0
+manytypes.big. IN      TYPE65499       \# 0
+manytypes.big. IN      TYPE65500       \# 0
+manytypes.big. IN      TYPE65501       \# 0
+manytypes.big. IN      TYPE65502       \# 0
+manytypes.big. IN      TYPE65503       \# 0
+manytypes.big. IN      TYPE65504       \# 0
+manytypes.big. IN      TYPE65505       \# 0
+manytypes.big. IN      TYPE65506       \# 0
+manytypes.big. IN      TYPE65507       \# 0
+manytypes.big. IN      TYPE65508       \# 0
+manytypes.big. IN      TYPE65509       \# 0
+manytypes.big. IN      TYPE65510       \# 0
+manytypes.big. IN      TYPE65511       \# 0
+manytypes.big. IN      TYPE65512       \# 0
+manytypes.big. IN      TYPE65513       \# 0
+manytypes.big. IN      TYPE65514       \# 0
+manytypes.big. IN      TYPE65515       \# 0
+manytypes.big. IN      TYPE65516       \# 0
+manytypes.big. IN      TYPE65517       \# 0
+manytypes.big. IN      TYPE65518       \# 0
+manytypes.big. IN      TYPE65519       \# 0
+manytypes.big. IN      TYPE65520       \# 0
+manytypes.big. IN      TYPE65521       \# 0
+manytypes.big. IN      TYPE65522       \# 0
+manytypes.big. IN      TYPE65523       \# 0
+manytypes.big. IN      TYPE65524       \# 0
+manytypes.big. IN      TYPE65525       \# 0
+manytypes.big. IN      TYPE65526       \# 0
+manytypes.big. IN      TYPE65527       \# 0
+manytypes.big. IN      TYPE65528       \# 0
+manytypes.big. IN      TYPE65529       \# 0
+manytypes.big. IN      TYPE65530       \# 0
+manytypes.big. IN      TYPE65531       \# 0
+manytypes.big. IN      TYPE65532       \# 0
+manytypes.big. IN      TYPE65533       \# 0
+manytypes.big. IN      TYPE65534       \# 0
index c56c0dbf55e3ee18c3d0c3f7b48d6f5ed730506f..65da2e57959b2d72700d673c3392905771cd61fd 100644 (file)
@@ -23,6 +23,7 @@ options {
        recursion no;
        dnssec-validation no;
        max-records-per-type 0;
+       max-types-per-name 0;
 };
 
 zone "." { type primary; file "root.db"; };
index 56f704a3c0dfadc8653ef274d4d7bad86e9472dc..7cf0633a0025d984a26078724c4f417b8aed5e06 100644 (file)
@@ -26,6 +26,7 @@ options {
        recursion yes;
        dnssec-validation yes;
        max-records-per-type 0;
+       max-types-per-name 10;
 };
 
 trust-anchors { };
diff --git a/bin/tests/system/reclimit/ns3/named6.conf.in b/bin/tests/system/reclimit/ns3/named6.conf.in
new file mode 100644 (file)
index 0000000..e1607e2
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * SPDX-License-Identifier: MPL-2.0
+ *
+ * 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 https://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+options {
+       directory ".";
+       query-source address 10.53.0.3;
+       notify-source 10.53.0.3;
+       transfer-source 10.53.0.3;
+       port @PORT@;
+       pid-file "named.pid";
+       listen-on { 10.53.0.3; };
+       listen-on-v6 { none; };
+       servfail-ttl 0;
+       qname-minimization disabled;
+       max-recursion-depth 12;
+       recursion yes;
+       dnssec-validation yes;
+       max-records-per-type 0;
+       max-types-per-name 0;
+};
+
+trust-anchors { };
+
+key rndc_key {
+       secret "1234abcd8765";
+       algorithm @DEFAULT_HMAC@;
+};
+
+controls {
+       inet 10.53.0.3 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
+};
+
+zone "." { type hint; file "hints.db"; };
index b332e381ff1c6bc92b0bca413ab702f7e5fb5eae..a13821ab4e29b20e4a061c67c2e58b4f06b2395c 100644 (file)
@@ -232,5 +232,39 @@ grep 'status: NOERROR' dig.out.2.test$n >/dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 
+check_manytypes() (
+  i=$1
+  type=$2
+  expected=$3
+
+  $DIG $DIGOPTS @10.53.0.3 IN $type manytypes.big >dig.out.$i.$type.test$n || exit 1
+  grep 'status: '"${expected}"'' dig.out.$i.$type.test$n >/dev/null || exit 1
+
+  exit 0
+)
+
+n=$((n + 1))
+echo_i "checking name that exceeds max-types-per-name ($n)"
+ret=0
+
+# Limited to 10 types - these should be fine
+for ntype in $(seq 65280 65289); do
+  check_manytypes 1 "TYPE${ntype}" NOERROR || ret=1
+done
+# Everything on top of that should SERVFAIL
+for ntype in $(seq 65290 65534); do
+  check_manytypes 1 "TYPE${ntype}" SERVFAIL || ret=1
+done
+
+# Lift the limit
+ns3_reset ns3/named6.conf.in
+
+for ntype in $(seq 65280 65534); do
+  check_manytypes 2 "TYPE${ntype}" NOERROR || ret=1
+done
+
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=$((status + ret))
+
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1