]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
tests/dcerpc/raw_protocol: add more tests for auth_pad alignment
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Nov 2020 16:22:19 +0000 (17:22 +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-auth-pad

index 95b3533cfadf8c9b5c93860848b8ec6dca56ab92..0cc26cf4d5623cec04d36c6bbdba1f849a916dda 100755 (executable)
@@ -6720,6 +6720,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
 
     def _test_spnego_level_bind(self, auth_level,
                                 g_auth_level=dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY,
+                                auth_pad_alignment=dcerpc.DCERPC_AUTH_PAD_ALIGNMENT,
                                 alter_fault=None,
                                 request_fault=None,
                                 response_fault_flags=0):
@@ -6749,10 +6750,10 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertIsNotNone(g)
 
         stub_bin = b'\x00' * 17
-        mod_len = len(stub_bin) % dcerpc.DCERPC_AUTH_PAD_ALIGNMENT
+        mod_len = len(stub_bin) % auth_pad_alignment
         auth_pad_length = 0
         if mod_len > 0:
-            auth_pad_length = dcerpc.DCERPC_AUTH_PAD_ALIGNMENT - mod_len
+            auth_pad_length = auth_pad_alignment - mod_len
         stub_bin += b'\x00' * auth_pad_length
 
         if g_auth_level >= dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY:
@@ -6882,6 +6883,20 @@ class TestDCERPC_BIND(RawDCERPCTest):
                                             request_fault=dcerpc.DCERPC_NCA_S_OP_RNG_ERROR,
                                             response_fault_flags=dcerpc.DCERPC_PFC_FLAG_DID_NOT_EXECUTE)
 
+    def test_spnego_integrity_bind_auth_align4(self):
+        return self._test_spnego_level_bind(auth_level=dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY,
+                                            g_auth_level=dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY,
+                                            auth_pad_alignment=4,
+                                            request_fault=dcerpc.DCERPC_NCA_S_OP_RNG_ERROR,
+                                            response_fault_flags=dcerpc.DCERPC_PFC_FLAG_DID_NOT_EXECUTE)
+
+    def test_spnego_integrity_bind_auth_align2(self):
+        return self._test_spnego_level_bind(auth_level=dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY,
+                                            g_auth_level=dcerpc.DCERPC_AUTH_LEVEL_INTEGRITY,
+                                            auth_pad_alignment=2,
+                                            request_fault=dcerpc.DCERPC_NCA_S_PROTO_ERROR,
+                                            response_fault_flags=0)
+
     def test_spnego_privacy_bind_none(self):
         # This fails...
         return self._test_spnego_level_bind(auth_level=dcerpc.DCERPC_AUTH_LEVEL_PRIVACY,
index f1daffa3771d6d22ad8b9509591fecec9b9d6c3f..add136710e04a9034eba7f61f2e0714a5944f545 100644 (file)
@@ -17,3 +17,4 @@
 ^samba.tests.dcerpc.raw_protocol.samba.tests.dcerpc.raw_protocol.TestDCERPC_BIND.test_auth_tail_pad_ntlm_auth3
 ^samba.tests.dcerpc.raw_protocol.samba.tests.dcerpc.raw_protocol.TestDCERPC_BIND.test_auth_tail_pad_spnego_alter
 ^samba.tests.dcerpc.raw_protocol.samba.tests.dcerpc.raw_protocol.TestDCERPC_BIND.test_auth_tail_pad_spnego_auth3
+^samba.tests.dcerpc.raw_protocol.samba.tests.dcerpc.raw_protocol.TestDCERPC_BIND.test_spnego_integrity_bind_auth_align2