summaryrefslogtreecommitdiff
path: root/source4/libcli
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-05-16 00:01:07 +0200
committerStefan Metzmacher <metze@samba.org>2017-06-17 16:48:11 +0200
commit4b88f6a88c3f35a54c59102bc4595427ae3a2a65 (patch)
treedbc739ec51771597604cf8aa27c51e7df3ab2997 /source4/libcli
parentc3a47ceab43989ccc513c16cd9c65b339ebb9f2f (diff)
downloadsamba-4b88f6a88c3f35a54c59102bc4595427ae3a2a65.tar.gz
s4:libcli/smb_composite: simplify gensec_update_ev() handling in session_setup_spnego()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/libcli')
-rw-r--r--source4/libcli/smb_composite/sesssetup.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/source4/libcli/smb_composite/sesssetup.c b/source4/libcli/smb_composite/sesssetup.c
index 9f989f21f2c..7f748c177b2 100644
--- a/source4/libcli/smb_composite/sesssetup.c
+++ b/source4/libcli/smb_composite/sesssetup.c
@@ -519,19 +519,22 @@ static NTSTATUS session_setup_spnego(struct composite_context *c,
return status;
}
+ state->setup.spnego.out.secblob =
+ session->transport->negotiate.secblob;
if (session->transport->negotiate.secblob.length) {
chosen_oid = GENSEC_OID_SPNEGO;
status = gensec_start_mech_by_oid(session->gensec, chosen_oid);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(1, ("Failed to start set GENSEC client mechanism %s: %s\n",
gensec_get_name_by_oid(session->gensec, chosen_oid), nt_errstr(status)));
+ state->setup.spnego.out.secblob = data_blob_null;
chosen_oid = GENSEC_OID_NTLMSSP;
status = gensec_start_mech_by_oid(session->gensec, chosen_oid);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(1, ("Failed to start set (fallback) GENSEC client mechanism %s: %s\n",
gensec_get_name_by_oid(session->gensec, chosen_oid),
nt_errstr(status)));
- return status;
+ return status;
}
}
} else {
@@ -544,18 +547,10 @@ static NTSTATUS session_setup_spnego(struct composite_context *c,
}
}
- if (strequal(chosen_oid, GENSEC_OID_SPNEGO)) {
- status = gensec_update_ev(session->gensec, state,
- c->event_ctx,
- session->transport->negotiate.secblob,
- &state->setup.spnego.in.secblob);
- } else {
- status = gensec_update_ev(session->gensec, state,
- c->event_ctx,
- data_blob(NULL, 0),
- &state->setup.spnego.in.secblob);
-
- }
+ status = gensec_update_ev(session->gensec, state,
+ c->event_ctx,
+ state->setup.spnego.out.secblob,
+ &state->setup.spnego.in.secblob);
if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED) &&
!NT_STATUS_IS_OK(status)) {