s3:libsmb: don't finish the gensec handshake for guest logins
authorStefan Metzmacher <metze@samba.org>
Tue, 19 Apr 2016 05:20:28 +0000 (07:20 +0200)
committerKarolin Seeger <kseeger@samba.org>
Fri, 29 Apr 2016 10:06:25 +0000 (12:06 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11841

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
(cherry picked from commit fa5799207e55ee8e329f36f784d027845eaf0e34)

source3/libsmb/cliconnect.c

index bad6c288a13d96680c65a8afb279ae71f6691367..c4ac605396cd67253b9a2a256f2d988211c76e06 100644 (file)
@@ -1590,6 +1590,27 @@ static void cli_session_setup_gensec_remote_done(struct tevent_req *subreq)
        }
 
        if (NT_STATUS_IS_OK(status)) {
+               struct smbXcli_session *session = NULL;
+               bool is_guest = false;
+
+               if (smbXcli_conn_protocol(state->cli->conn) >= PROTOCOL_SMB2_02) {
+                       session = state->cli->smb2.session;
+               } else {
+                       session = state->cli->smb1.session;
+               }
+
+               is_guest = smbXcli_session_is_guest(session);
+               if (is_guest) {
+                       /*
+                        * We can't finish the gensec handshake, we don't
+                        * have a negotiated session key.
+                        *
+                        * So just pretend we are completely done.
+                        */
+                       state->blob_in = data_blob_null;
+                       state->local_ready = true;
+               }
+
                state->remote_ready = true;
        }