gss: NTLM nsi_probe returns a krb5, not gss error
The nsi_probe() error code was treated as a GSS error code, rather than a krb5 error. Return a GSS error code, setting the krb5 error in minor_status.
This commit is contained in:
@@ -57,20 +57,23 @@ _gss_ntlm_acquire_cred_from(OM_uint32 *min_stat,
|
|||||||
*time_rec = GSS_C_INDEFINITE;
|
*time_rec = GSS_C_INDEFINITE;
|
||||||
|
|
||||||
if (cred_usage == GSS_C_BOTH || cred_usage == GSS_C_ACCEPT) {
|
if (cred_usage == GSS_C_BOTH || cred_usage == GSS_C_ACCEPT) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
maj_stat = _gss_ntlm_allocate_ctx(min_stat, &ctx);
|
maj_stat = _gss_ntlm_allocate_ctx(min_stat, &ctx);
|
||||||
if (maj_stat != GSS_S_COMPLETE)
|
if (maj_stat != GSS_S_COMPLETE)
|
||||||
return maj_stat;
|
return maj_stat;
|
||||||
|
|
||||||
domain = name != NULL ? name->domain : NULL;
|
domain = name != NULL ? name->domain : NULL;
|
||||||
maj_stat = (*ctx->server->nsi_probe)(min_stat, ctx->ictx, domain);
|
ret = (*ctx->server->nsi_probe)(min_stat, ctx->ictx, domain);
|
||||||
{
|
{
|
||||||
gss_ctx_id_t context = (gss_ctx_id_t)ctx;
|
gss_ctx_id_t context = (gss_ctx_id_t)ctx;
|
||||||
OM_uint32 junk;
|
OM_uint32 junk;
|
||||||
_gss_ntlm_delete_sec_context(&junk, &context, NULL);
|
_gss_ntlm_delete_sec_context(&junk, &context, NULL);
|
||||||
}
|
}
|
||||||
if (maj_stat)
|
if (ret) {
|
||||||
return maj_stat;
|
*min_stat = ret;
|
||||||
|
return GSS_S_NO_CRED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (cred_usage == GSS_C_BOTH || cred_usage == GSS_C_INITIATE) {
|
if (cred_usage == GSS_C_BOTH || cred_usage == GSS_C_INITIATE) {
|
||||||
ntlm_cred cred;
|
ntlm_cred cred;
|
||||||
|
Reference in New Issue
Block a user