]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
python:tests/dns_base: let dns_transaction_udp() take allow_{remaining,truncated...
authorStefan Metzmacher <metze@samba.org>
Wed, 29 May 2024 12:14:11 +0000 (14:14 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 6 Jun 2024 02:13:33 +0000 (02:13 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13019

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/dns_base.py

index dabf3e0910988f08cbf20c38afb461192bdb49ee..c8c5d15db579ac6e1af6df1eb328c87a598f78a7 100644 (file)
@@ -130,6 +130,8 @@ class DNSTest(TestCaseInTempDir):
         return self.creds.get_realm().lower()
 
     def dns_transaction_udp(self, packet, host,
+                            allow_remaining=False,
+                            allow_truncated=False,
                             dump=False, timeout=None):
         "send a DNS query and read the reply"
         s = None
@@ -146,7 +148,17 @@ class DNSTest(TestCaseInTempDir):
             recv_packet = s.recv(2048, 0)
             if dump:
                 print(self.hexdump(recv_packet))
-            response = ndr.ndr_unpack(dns.name_packet, recv_packet)
+            if allow_truncated:
+                # with allow_remaining
+                # we add some zero bytes
+                # in order to also parse truncated
+                # responses
+                recv_packet_p = recv_packet + 32*b"\x00"
+                allow_remaining = True
+            else:
+                recv_packet_p = recv_packet
+            response = ndr.ndr_unpack(dns.name_packet, recv_packet_p,
+                                      allow_remaining=allow_remaining)
             return (response, recv_packet)
         finally:
             if s is not None: