]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a helper for uncompressed length of dnspython's dns.name.Name
authorŠtěpán Balážik <stepan@isc.org>
Tue, 14 May 2024 14:26:44 +0000 (16:26 +0200)
committerPetr Špaček <pspacek@isc.org>
Tue, 28 May 2024 12:12:16 +0000 (12:12 +0000)
This is useful for generating using hypothesis but also for other
cases.

bin/tests/system/isctest/hypothesis/strategies.py
bin/tests/system/isctest/name.py

index 1e05cc1932bab2357ad30bd4157e6cfcaf63529e..d26a90b1c2d15eeb8105cba52ddf23d79c5272ee 100644 (file)
@@ -29,6 +29,8 @@ import dns.message
 import dns.rdataclass
 import dns.rdatatype
 
+import isctest.name
+
 
 @composite
 def dns_names(
@@ -73,7 +75,7 @@ def dns_names(
 
     try:
         outer_name = prefix + suffix
-        remaining_bytes = 255 - len(outer_name.to_wire())
+        remaining_bytes = 255 - isctest.name.len_wire_uncompressed(outer_name)
         assert remaining_bytes >= 0
     except dns.name.NameTooLong:
         warn(
index f5b6de52c34be1c7dad2020f30cd32d84e0ec306..d992ae3fce9edd840e646b4306e3a5a5e33a4731 100644 (file)
@@ -14,3 +14,7 @@ import dns.name
 
 def prepend_label(label: str, name: dns.name.Name) -> dns.name.Name:
     return dns.name.Name((label,) + name.labels)
+
+
+def len_wire_uncompressed(name: dns.name.Name) -> int:
+    return len(name) + sum(map(len, name.labels))