]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:libcli/smb2: use raw ntlmssp if the server didn't provide a sec blob
authorStefan Metzmacher <metze@samba.org>
Wed, 20 May 2009 15:17:07 +0000 (17:17 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 20 May 2009 17:58:37 +0000 (19:58 +0200)
metze

source4/libcli/smb2/session.c

index 127bb9bcae7c3cb31a00ffb63c4f1d1fcba3f6ba..cf50ba68318b95398208ef1e75227b80dd0c0631 100644 (file)
@@ -207,6 +207,7 @@ struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *se
 {
        struct composite_context *c;
        struct smb2_session_state *state;
+       const char *chosen_oid;
 
        c = composite_create(session, session->transport->socket->event.ctx);
        if (c == NULL) return NULL;
@@ -235,7 +236,13 @@ struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *se
        c->status = gensec_set_target_service(session->gensec, "cifs");
        if (!composite_is_ok(c)) return c;
 
-       c->status = gensec_start_mech_by_oid(session->gensec, GENSEC_OID_SPNEGO);
+       if (session->transport->negotiate.secblob.length > 0) {
+               chosen_oid = GENSEC_OID_SPNEGO;
+       } else {
+               chosen_oid = GENSEC_OID_NTLMSSP;
+       }
+
+       c->status = gensec_start_mech_by_oid(session->gensec, chosen_oid);
        if (!composite_is_ok(c)) return c;
 
        c->status = gensec_update(session->gensec, c,