svn commit: samba r19481 - in branches/SAMBA_4_0/source/libcli/smb_composite: .

metze at samba.org metze at samba.org
Tue Oct 24 16:16:31 GMT 2006


Author: metze
Date: 2006-10-24 16:16:31 +0000 (Tue, 24 Oct 2006)
New Revision: 19481

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19481

Log:
- reset the vuid before trying a new session setup
- only touch session->vuid when needed
- it make no sense to set an .spnego.out.vuid

metze
Modified:
   branches/SAMBA_4_0/source/libcli/smb_composite/sesssetup.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/smb_composite/sesssetup.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/smb_composite/sesssetup.c	2006-10-24 16:14:00 UTC (rev 19480)
+++ branches/SAMBA_4_0/source/libcli/smb_composite/sesssetup.c	2006-10-24 16:16:31 UTC (rev 19481)
@@ -80,6 +80,8 @@
 		/* This doesn't work, as this only happens on old
 		 * protocols, where this comparison won't match. */
 		if (NT_STATUS_EQUAL(c->status, NT_STATUS_LOGON_FAILURE)) {
+			/* we neet to reset the vuid for a new try */
+			session->vuid = 0;
 			if (cli_credentials_wrong_password(state->io->in.credentials)) {
 				nt_status = session_setup_old(c, session, 
 							      state->io, 
@@ -97,6 +99,8 @@
 	case RAW_SESSSETUP_NT1:
 		state->io->out.vuid = state->setup.nt1.out.vuid;
 		if (NT_STATUS_EQUAL(c->status, NT_STATUS_LOGON_FAILURE)) {
+			/* we neet to reset the vuid for a new try */
+			session->vuid = 0;
 			if (cli_credentials_wrong_password(state->io->in.credentials)) {
 				nt_status = session_setup_nt1(c, session, 
 							      state->io, 
@@ -112,8 +116,10 @@
 		break;
 
 	case RAW_SESSSETUP_SPNEGO:
-		session->vuid = state->io->out.vuid = state->setup.spnego.out.vuid;
+		state->io->out.vuid = state->setup.spnego.out.vuid;
 		if (NT_STATUS_EQUAL(c->status, NT_STATUS_LOGON_FAILURE)) {
+			/* we neet to reset the vuid for a new try */
+			session->vuid = 0;
 			if (cli_credentials_wrong_password(state->io->in.credentials)) {
 				nt_status = session_setup_spnego(c, session, 
 								      state->io, 
@@ -160,7 +166,14 @@
 		}
 
 		if (state->setup.spnego.in.secblob.length) {
+			/* 
+			 * set the session->vuid value only for calling
+			 * smb_raw_sesssetup_send()
+			 */
+			uint16_t vuid = session->vuid;
+			session->vuid = state->io->out.vuid;
 			state->req = smb_raw_sesssetup_send(session, &state->setup);
+			session->vuid = vuid;
 			state->req->async.fn = request_handler;
 			state->req->async.private = c;
 			return;
@@ -343,8 +356,6 @@
 	state->setup.spnego.in.lanman       = talloc_asprintf(state, "Samba %s", SAMBA_VERSION_STRING);
 	state->setup.spnego.in.workgroup    = io->in.workgroup;
 
-	state->setup.spnego.out.vuid        = session->vuid;
-
 	smbcli_temp_set_signing(session->transport);
 
 	status = gensec_client_start(session, &session->gensec, c->event_ctx);



More information about the samba-cvs mailing list