TEST1b test_spnego_connect_bind_auth_align[4|2]
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Nov 2020 16:22:19 +0000 (17:22 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 23 Apr 2024 16:16:45 +0000 (18:16 +0200)
python/samba/tests/dcerpc/raw_protocol.py

index b2c095223e912f15408a2f41db6203f22f37cb61..4ebcf75b7c4bf547d35d505ccc916deeab2932f6 100755 (executable)
@@ -6276,6 +6276,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):
@@ -6305,10 +6306,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:
@@ -6438,6 +6439,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,