]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
tests/dcerpc/raw_protocol: run test_neg_xmit_ffff_ffff over tcp and smb
authorStefan Metzmacher <metze@samba.org>
Mon, 16 Nov 2020 14:01:49 +0000 (15:01 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 10 Oct 2024 14:01:04 +0000 (14:01 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14356

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
python/samba/tests/dcerpc/raw_protocol.py
selftest/knownfail.d/dcerpc-transport-xmit [new file with mode: 0644]

index d10f767371b98401ea8ec368c57edbce80911b77..6d2220674dfec64b383a0ade70d30e42275fac9d 100755 (executable)
@@ -2979,6 +2979,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
                                     req_xmit=None,
                                     req_recv=None,
                                     rep_both=None,
+                                    transport_both=5840,
                                     alter_xmit=None,
                                     alter_recv=None):
         ndr32 = base.transfer_syntax_ndr()
@@ -3001,9 +3002,16 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEqual(rep.u.max_xmit_frag, rep_both)
         self.assertEqual(rep.u.max_recv_frag, rep_both)
         self.assertNotEqual(rep.u.assoc_group_id, req.u.assoc_group_id)
-        self.assertEqual(rep.u.secondary_address_size, 4)
-        self.assertEqual(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertPadding(rep.u._pad1, 2)
+        sda_str = self.secondary_address
+        sda_len = len(sda_str) + 1
+        mod_len = (2 + sda_len) % 4
+        if mod_len != 0:
+            sda_pad = 4 - mod_len
+        else:
+            sda_pad = 0
+        self.assertEqual(rep.u.secondary_address_size, sda_len)
+        self.assertEqual(rep.u.secondary_address, sda_str)
+        self.assertPadding(rep.u._pad1, sda_pad)
         self.assertEqual(rep.u.num_results, 1)
         self.assertEqual(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -3057,7 +3065,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEqual(rep.u.cancel_count, 0)
         self.assertGreaterEqual(len(rep.u.stub_and_verifier), rep.u.alloc_hint)
 
-        chunk_size = 5840 - dcerpc.DCERPC_REQUEST_LENGTH
+        chunk_size = transport_both - dcerpc.DCERPC_REQUEST_LENGTH
         req = self.generate_request(call_id=2,
                                     context_id=ctx1.context_id,
                                     opnum=0,
@@ -3096,11 +3104,21 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertIsNone(rep)
         self.assertNotConnected()
 
-    def test_neg_xmit_ffff_ffff(self):
+    def test_neg_xmit_ffff_ffff_tcp(self):
         return self._test_neg_xmit_check_values(req_xmit=0xffff,
                                                 req_recv=0xffff,
                                                 rep_both=5840)
 
+    def test_neg_xmit_ffff_ffff_smb(self):
+        transport_creds = self.get_anon_creds()
+        self.reconnect_smb_pipe(primary_address='\\pipe\\lsarpc',
+                                secondary_address='\\pipe\\lsass',
+                                transport_creds=transport_creds)
+        return self._test_neg_xmit_check_values(req_xmit=0xffff,
+                                                req_recv=0xffff,
+                                                rep_both=4280,
+                                                transport_both=4280)
+
     def test_neg_xmit_0_ffff(self):
         return self._test_neg_xmit_check_values(req_xmit=0,
                                                 req_recv=0xffff,
diff --git a/selftest/knownfail.d/dcerpc-transport-xmit b/selftest/knownfail.d/dcerpc-transport-xmit
new file mode 100644 (file)
index 0000000..e070c15
--- /dev/null
@@ -0,0 +1 @@
+^samba.tests.dcerpc.raw_protocol.samba.tests.dcerpc.raw_protocol.TestDCERPC_BIND.test_neg_xmit_ffff_ffff_smb