From: Stefan Metzmacher Date: Mon, 15 May 2017 22:01:07 +0000 (+0200) Subject: s4:libcli/smb_composite: simplify gensec_update_ev() handling in session_setup_spnego() X-Git-Tag: tevent-0.9.32~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b88f6a88c3f35a54c59102bc4595427ae3a2a65;p=thirdparty%2Fsamba.git s4:libcli/smb_composite: simplify gensec_update_ev() handling in session_setup_spnego() Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- 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)) {