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.
This commit is contained in:
Colin Vidal 2026-06-03 16:09:12 +02:00
parent 80496aeb68
commit 38f4d05f74
2 changed files with 20 additions and 0 deletions

View 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;
};

View 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"
)