diff options
-rw-r--r-- | auth/gensec/spnego.c | 64 |
1 files changed, 31 insertions, 33 deletions
diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c index 664591396b8..5d71ae11097 100644 --- a/auth/gensec/spnego.c +++ b/auth/gensec/spnego.c @@ -230,6 +230,10 @@ static NTSTATUS gensec_spnego_create_negTokenInit(struct gensec_security *gensec mechTypes, GENSEC_OID_SPNEGO); for (i=0; all_sec && all_sec[i].op; i++) { + const char *next = NULL; + const char *principal = NULL; + int dbg_level = DBGLVL_WARNING; + nt_status = gensec_subcontext_start(spnego_state, gensec_security, &spnego_state->sub_sec_security); @@ -261,44 +265,38 @@ static NTSTATUS gensec_spnego_create_negTokenInit(struct gensec_security *gensec spnego_state->sub_sec_ready = true; } - if (GENSEC_UPDATE_IS_NTERROR(nt_status)) { - const char *next = NULL; - const char *principal = NULL; - int dbg_level = DBGLVL_WARNING; - - if (all_sec[i+1].op != NULL) { - next = all_sec[i+1].op->name; - dbg_level = DBGLVL_NOTICE; - } - - if (gensec_security->target.principal != NULL) { - principal = gensec_security->target.principal; - } else if (gensec_security->target.service != NULL && - gensec_security->target.hostname != NULL) - { - principal = talloc_asprintf(spnego_state->sub_sec_security, - "%s/%s", - gensec_security->target.service, - gensec_security->target.hostname); - } else { - principal = gensec_security->target.hostname; - } + if (!GENSEC_UPDATE_IS_NTERROR(nt_status)) { + goto reply; + } - DEBUG(dbg_level, ("SPNEGO(%s) creating NEG_TOKEN_INIT for %s failed (next[%s]): %s\n", - spnego_state->sub_sec_security->ops->name, - principal, - next, nt_errstr(nt_status))); + if (all_sec[i+1].op != NULL) { + next = all_sec[i+1].op->name; + dbg_level = DBGLVL_NOTICE; + } - /* - * Pretend we never started it - */ - gensec_spnego_update_sub_abort(spnego_state); - continue; + if (gensec_security->target.principal != NULL) { + principal = gensec_security->target.principal; + } else if (gensec_security->target.service != NULL && + gensec_security->target.hostname != NULL) + { + principal = talloc_asprintf(spnego_state->sub_sec_security, + "%s/%s", + gensec_security->target.service, + gensec_security->target.hostname); + } else { + principal = gensec_security->target.hostname; } - goto reply; + DEBUG(dbg_level, ("SPNEGO(%s) creating NEG_TOKEN_INIT for %s failed (next[%s]): %s\n", + spnego_state->sub_sec_security->ops->name, + principal, + next, nt_errstr(nt_status))); + + /* + * Pretend we never started it + */ + gensec_spnego_update_sub_abort(spnego_state); } - gensec_spnego_update_sub_abort(spnego_state); DEBUG(10, ("Failed to setup SPNEGO negTokenInit request: %s\n", nt_errstr(nt_status))); return nt_status; |