diff --git a/bin/tests/system/reclimit/ns1/big.db b/bin/tests/system/reclimit/ns1/big.db index bddceb76e7..c256594c78 100644 --- a/bin/tests/system/reclimit/ns1/big.db +++ b/bin/tests/system/reclimit/ns1/big.db @@ -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 diff --git a/bin/tests/system/reclimit/ns1/named.conf.in b/bin/tests/system/reclimit/ns1/named.conf.in index c56c0dbf55..65da2e5795 100644 --- a/bin/tests/system/reclimit/ns1/named.conf.in +++ b/bin/tests/system/reclimit/ns1/named.conf.in @@ -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"; }; diff --git a/bin/tests/system/reclimit/ns3/named5.conf.in b/bin/tests/system/reclimit/ns3/named5.conf.in index 56f704a3c0..7cf0633a00 100644 --- a/bin/tests/system/reclimit/ns3/named5.conf.in +++ b/bin/tests/system/reclimit/ns3/named5.conf.in @@ -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 index 0000000000..e1607e275d --- /dev/null +++ b/bin/tests/system/reclimit/ns3/named6.conf.in @@ -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"; }; diff --git a/bin/tests/system/reclimit/tests.sh b/bin/tests/system/reclimit/tests.sh index 42e98d90aa..cf657d81af 100644 --- a/bin/tests/system/reclimit/tests.sh +++ b/bin/tests/system/reclimit/tests.sh @@ -233,5 +233,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