]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Checking maximal sized compresses bit map works
authorMark Andrews <marka@isc.org>
Thu, 26 Mar 2026 02:05:18 +0000 (13:05 +1100)
committerMark Andrews <marka@isc.org>
Fri, 10 Apr 2026 05:45:01 +0000 (15:45 +1000)
Add records that will be at end of each compressed bitmap less 1
of the NSEC3 record. Zone verification should still work.

bin/tests/system/dnssectools/tests.sh
bin/tests/system/dnssectools/tests_sh_dnssectools.py

index f8e836c8ecc72802291cc1c3d0fdd10b7a3b0c07..666c6ebe855a346fb9742a357ff0e1d1fb70780e 100644 (file)
@@ -906,6 +906,35 @@ n=$((n + 1))
 if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
 status=$((status + ret))
 
+echo_i "checking maximal sized compresses bit map works ($n)"
+ret=0
+(
+  cd signer || exit 0
+  key1=$(${KEYGEN} -a "${DEFAULT_ALGORITHM}" -f KSK maxcbm.example)
+  key2=$(${KEYGEN} -a "${DEFAULT_ALGORITHM}" maxcbm.example)
+  cat >>maxcbm.example.db <<EOF
+\$TTL 3600
+@ SOA . . 0 0 0 0 3600
+@ NS .
+\$INCLUDE "${key1}.key"
+\$INCLUDE "${key2}.key"
+; the last data type in the first window
+data TYPE127 \# 0
+EOF
+  # add a record at the end of each cbm window less 1
+  type=$((256 + 254))
+  while test $type -lt 65536; do
+    echo "data TYPE$type \\# 0" >>maxcbm.example.db
+    type=$((type + 256))
+  done
+  "${SIGNER}" -3 - -o maxcbm.example maxcbm.example.db >signer.out.$n
+  "${CHECKZONE}" -q -D maxcbm.example maxcbm.example.db.signed \
+    | grep '^M7L6E3AJUD7LRVUMMQS595OGHBMT4DFT.*NSEC3.*TYPE65534$' >/dev/null || ret=1
+) || ret=1
+n=$((n + 1))
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status + ret))
+
 echo_i "check that 'dnssec-keygen -S' works for all supported algorithms ($n)"
 ret=0
 alg=1
index fe70cf52c406268cfe1d82f5ba9e851e5a08a4b1..3837da290da8853e822ba02fb99bed62541fef94 100644 (file)
@@ -41,6 +41,7 @@ pytestmark = pytest.mark.extra_artifacts(
         "signer/general/signed.expect",
         "signer/general/signed.zone",
         "signer/general/signer.out.*",
+        "signer/maxcbm.example.db",
         "signer/nsec3param.out",
         "signer/prepub.db",
         "signer/revoke.example.db",