From 2b7ee2ceee0a1b2be596a602997908f72a3af14d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 12 Nov 2005 01:08:43 +0000 Subject: r11692: added a full composite (async) spnego session setup for SMB2. This simplies the torture code a lot. (This used to be commit 7bf1046fbb7fd83fecb2fa645628ba9a17aab037) --- source4/torture/smb2/connect.c | 76 ++++++------------------------------------ 1 file changed, 10 insertions(+), 66 deletions(-) (limited to 'source4/torture/smb2') diff --git a/source4/torture/smb2/connect.c b/source4/torture/smb2/connect.c index 2af6bfb576..e88db8ac5b 100644 --- a/source4/torture/smb2/connect.c +++ b/source4/torture/smb2/connect.c @@ -27,7 +27,6 @@ #include "librpc/gen_ndr/ndr_security.h" #include "lib/cmdline/popt_common.h" #include "lib/events/events.h" -#include "auth/gensec/gensec.h" #define BASEDIR "\\testsmb2" @@ -88,77 +87,16 @@ static struct smb2_session *torture_smb2_session(struct smb2_transport *transpor struct cli_credentials *credentials) { struct smb2_session *session; - struct smb2_session_setup io; NTSTATUS status; - TALLOC_CTX *tmp_ctx = talloc_new(transport); - DATA_BLOB secblob; - - ZERO_STRUCT(io); - io.in.unknown1 = 0x11; - io.in.unknown2 = 0xF; - io.in.unknown3 = 0x00; - + session = smb2_session_init(transport, transport, True); - status = gensec_set_credentials(session->gensec, credentials); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(1, ("Failed to start set GENSEC client credentails: %s\n", - nt_errstr(status))); - return NULL; - } - - status = gensec_set_target_hostname(session->gensec, transport->socket->hostname); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(1, ("Failed to start set GENSEC target hostname: %s\n", - nt_errstr(status))); - return NULL; - } - - status = gensec_set_target_service(session->gensec, "cifs"); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(1, ("Failed to start set GENSEC target service: %s\n", - nt_errstr(status))); - return NULL; - } - - status = gensec_start_mech_by_oid(session->gensec, GENSEC_OID_SPNEGO); + status = smb2_session_setup_spnego(session, credentials); if (!NT_STATUS_IS_OK(status)) { - DEBUG(1, ("Failed to start set GENSEC client - %s\n", - nt_errstr(status))); + printf("Session setup failed - %s\n", nt_errstr(status)); return NULL; } - - secblob = session->transport->negotiate.secblob; - - do { - NTSTATUS status1; - - status1 = gensec_update(session->gensec, tmp_ctx, secblob, &io.in.secblob); - if (!NT_STATUS_EQUAL(status1, NT_STATUS_MORE_PROCESSING_REQUIRED) && - !NT_STATUS_IS_OK(status1)) { - DEBUG(1, ("Failed initial gensec_update : %s\n", - nt_errstr(status1))); - status = status1; - break; - } - - status = smb2_session_setup(session, tmp_ctx, &io); - secblob = io.out.secblob; - - session->uid = io.out.uid; - - if (NT_STATUS_IS_OK(status) && - NT_STATUS_EQUAL(status1, NT_STATUS_MORE_PROCESSING_REQUIRED)) { - status = gensec_update(session->gensec, tmp_ctx, secblob, - &io.in.secblob); - } - } while (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)); - - if (!NT_STATUS_IS_OK(status)) { - printf("session setup failed - %s\n", nt_errstr(status)); - return NULL; - } - + printf("Session setup gave UID 0x%016llx\n", session->uid); return session; @@ -292,8 +230,14 @@ BOOL torture_smb2_connect(void) struct smb2_handle h1, h2; transport = torture_smb2_negprot(mem_ctx, host); + if (transport == NULL) return False; + session = torture_smb2_session(transport, credentials); + if (session == NULL) return False; + tree = torture_smb2_tree(session, share); + if (tree == NULL) return False; + h1 = torture_smb2_create(tree, "test9.dat"); h2 = torture_smb2_create(tree, "test9.dat"); torture_smb2_close(tree, h1); -- cgit