]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
py:dcerpc/raw_testcase: support DCERPC_AUTH_LEVEL_CONNECT in do_single_request()
authorStefan Metzmacher <metze@samba.org>
Mon, 26 Nov 2018 10:41:26 +0000 (11:41 +0100)
committerJeremy Allison <jra@samba.org>
Sun, 23 Dec 2018 17:15:22 +0000 (18:15 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
python/samba/tests/dcerpc/raw_testcase.py

index bda13d8d4ccc4b96e34470bd3d67c733dd4f5df4..ea3565fc6c397c136d8ac65bbc0b470a6c263077 100644 (file)
@@ -412,8 +412,13 @@ class RawDCERPCTest(TestCase):
                 self.assertEquals(len(rep.u.error_and_verifier), 0)
                 return
 
+            expected_auth_length = 0
+            if auth_context is not None and \
+               auth_context["auth_level"] >= dcerpc.DCERPC_AUTH_LEVEL_PACKET:
+                expected_auth_length = req.auth_length
+
             self.verify_pdu(rep, samba.dcerpc.dcerpc.DCERPC_PKT_RESPONSE, req.call_id,
-                            auth_length=req.auth_length)
+                            auth_length=expected_auth_length)
             self.assertNotEquals(rep.u.alloc_hint, 0)
             self.assertEquals(rep.u.context_id, req.u.context_id & 0xff)
             self.assertEquals(rep.u.cancel_count, 0)
@@ -650,6 +655,12 @@ class RawDCERPCTest(TestCase):
             self.assertEquals(rep.auth_length, 0)
             return rep.u.stub_and_verifier
 
+        if auth_context["auth_level"] == dcerpc.DCERPC_AUTH_LEVEL_CONNECT:
+            self.assertEquals(rep.auth_length, 0)
+            return rep.u.stub_and_verifier
+
+        self.assertGreater(rep.auth_length, 0)
+
         ofs_stub = dcerpc.DCERPC_REQUEST_LENGTH
         ofs_sig = rep.frag_length - rep.auth_length
         ofs_trailer = ofs_sig - dcerpc.DCERPC_AUTH_TRAILER_LENGTH
@@ -768,6 +779,10 @@ class RawDCERPCTest(TestCase):
             self.assertTrue(False)
         elif auth_context["auth_level"] >= dcerpc.DCERPC_AUTH_LEVEL_PACKET:
             req_sig = auth_context["gensec"].sign_packet(req_data, req_whole)
+        elif auth_context["auth_level"] >= dcerpc.DCERPC_AUTH_LEVEL_CONNECT:
+            self.assertEquals(auth_context["auth_type"],
+                              dcerpc.DCERPC_AUTH_TYPE_NTLMSSP)
+            req_sig = b"\x01" +b"\x00" *15
         else:
             return req
         self.assertEquals(len(req_sig), req.auth_length)