]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:libcli/smb_composite: simplify gensec_update_ev() handling in session_setup_spnego()
authorStefan Metzmacher <metze@samba.org>
Mon, 15 May 2017 22:01:07 +0000 (00:01 +0200)
committerStefan Metzmacher <metze@samba.org>
Sat, 17 Jun 2017 14:48:11 +0000 (16:48 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/libcli/smb_composite/sesssetup.c

index 9f989f21f2c5b3babe0f03b60076266efde3ddfc..7f748c177b276bc41f66324cd6e3217a2c0cd210 100644 (file)
@@ -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)) {