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);

Reply via email to