From: Colin Vidal Date: Wed, 3 Jun 2026 14:09:12 +0000 (+0200) Subject: Add synthrecord systest with long prefix X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=38f4d05f74aa55d4e2fd8d78591b90cecd10a136;p=thirdparty%2Fbind9.git Add synthrecord systest with long prefix Add a system test covering the synthrecord in reverse mode with a (too) long prefix. If the prefix size doesn't leave room to add the reversed IP address, the attempt to generate a name is aborted, and `NXDOMAIN` is returned. --- diff --git a/bin/tests/system/synthrecord/ns1/named.conf.j2 b/bin/tests/system/synthrecord/ns1/named.conf.j2 index f2421febb10..0193196b1fa 100644 --- a/bin/tests/system/synthrecord/ns1/named.conf.j2 +++ b/bin/tests/system/synthrecord/ns1/named.conf.j2 @@ -1,4 +1,5 @@ {% set inview = inview | default(False) %} +{% set toolongprefix = toolongprefix | default(False) %} options { query-source address 10.53.0.1; @@ -56,7 +57,11 @@ zone "0.53.10.in-addr.arpa." { type primary; file "0.53.10.in-addr.arpa.db"; plugin query "@TOP_BUILDDIR@/synthrecord" { +{% if toolongprefix %} + prefix "waytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefixwaytoolongprefix"; +{% else %} prefix "dynamic-"; +{% endif %} allow-synth { 10.53.0.0/24; }; diff --git a/bin/tests/system/synthrecord/tests_synthrecord.py b/bin/tests/system/synthrecord/tests_synthrecord.py index 3579b7a33d9..dc66d9fe5fa 100644 --- a/bin/tests/system/synthrecord/tests_synthrecord.py +++ b/bin/tests/system/synthrecord/tests_synthrecord.py @@ -508,3 +508,18 @@ def test_synthrecord_inview(ns1, templates): cmd = ns1.rndc("reconfig", raise_on_exception=False) assert cmd.rc != 0 watcher.wait_for_line("'synthrecord' must be configured as a zone plugin") + + +def test_synthrecord_toolongprefix(ns1, templates): + templates.render("ns1/named.conf", {"toolongprefix": True}) + with ns1.watch_log_from_here() as watcher: + ns1.rndc("reconfig") + watcher.wait_for_line("running") + ip = IPv4Address("10.53.0.8") + with ns1.watch_log_from_here() as watcher: + query = dns.message.make_query(ip.reverse_pointer, "PTR") + res = isctest.query.udp(query, SERVER) + assert res.rcode() == dns.rcode.NXDOMAIN + watcher.wait_for_line( + "synthrecord cannot create reverse answer name: ran out of space" + )