summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-03-28 13:05:49 +0100
committerMichael Adam <obnox@samba.org>2014-09-30 23:35:08 +0200
commit854f579372eb98f180ff0a29e3dd8c04290f6325 (patch)
treec0f9157aaee8cc13b144e634193aeb31b7c17151
parent760f23a8e2297bfff423b81a712a86c6f62599cd (diff)
downloadsamba-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.c38
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;