]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add synthrecord systest with long prefix
authorColin Vidal <colin@isc.org>
Wed, 3 Jun 2026 14:09:12 +0000 (16:09 +0200)
committerColin Vidal <colin@isc.org>
Thu, 4 Jun 2026 11:51:59 +0000 (13:51 +0200)
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.

bin/tests/system/synthrecord/ns1/named.conf.j2
bin/tests/system/synthrecord/tests_synthrecord.py

index f2421febb10da0fe00c5de2b249af12e7d54ca52..0193196b1fac2e2c7ec5b1d16d3d21240f53d64b 100644 (file)
@@ -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;
                };
index 3579b7a33d98e1b35d88fd8ccb7b9b0e9dec6143..dc66d9fe5fa172dae87ef3eac6fae30068b240b2 100644 (file)
@@ -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"
+        )