diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-03-28 13:05:49 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-09-30 23:35:08 +0200 |
commit | 854f579372eb98f180ff0a29e3dd8c04290f6325 (patch) | |
tree | c0f9157aaee8cc13b144e634193aeb31b7c17151 | |
parent | 760f23a8e2297bfff423b81a712a86c6f62599cd (diff) | |
download | samba-854f579372eb98f180ff0a29e3dd8c04290f6325.tar.gz |
s4:libcli/smb_composite: don't try anonymous smb signing
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | source4/libcli/smb_composite/sesssetup.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/source4/libcli/smb_composite/sesssetup.c b/source4/libcli/smb_composite/sesssetup.c index f7e92e5fb99..e4964c19b5d 100644 --- a/source4/libcli/smb_composite/sesssetup.c +++ b/source4/libcli/smb_composite/sesssetup.c @@ -196,7 +196,11 @@ static void request_handler(struct smbcli_request *req) state->setup.spnego.in.secblob = data_blob(NULL, 0); } - if (NT_STATUS_IS_OK(state->remote_status)) { + if (cli_credentials_is_anonymous(state->io->in.credentials)) { + /* + * anonymous => no signing + */ + } else if (NT_STATUS_IS_OK(state->remote_status)) { DATA_BLOB session_key; if (state->setup.spnego.in.secblob.length) { @@ -347,17 +351,29 @@ static NTSTATUS session_setup_nt1(struct composite_context *c, return NT_STATUS_NO_MEMORY; } - if (NT_STATUS_IS_OK(nt_status)) { - smb1cli_conn_activate_signing(session->transport->conn, - session_key, - state->setup.nt1.in.password2); + if (!NT_STATUS_IS_OK(nt_status)) { + /* + * plain text => no signing + */ + return (*req)->status; + } - nt_status = smb1cli_session_set_session_key(session->smbXcli, - session_key); - data_blob_free(&session_key); - if (!NT_STATUS_IS_OK(nt_status)) { - return nt_status; - } + if (cli_credentials_is_anonymous(io->in.credentials)) { + /* + * anonymous => no signing + */ + return (*req)->status; + } + + smb1cli_conn_activate_signing(session->transport->conn, + session_key, + state->setup.nt1.in.password2); + + nt_status = smb1cli_session_set_session_key(session->smbXcli, + session_key); + data_blob_free(&session_key); + if (!NT_STATUS_IS_OK(nt_status)) { + return nt_status; } return (*req)->status; |