(gss_acquire_cred): check usage before even bothering to process it,

add both keytab and initial tgt if requested


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13524 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2004-03-14 16:42:39 +00:00
parent 1e4a6015a7
commit b5cdf72e01
2 changed files with 14 additions and 12 deletions

View File

@@ -233,6 +233,11 @@ OM_uint32 gss_acquire_cred
gss_cred_id_t handle; gss_cred_id_t handle;
OM_uint32 ret; OM_uint32 ret;
if (cred_usage != GSS_C_ACCEPT && cred_usage != GSS_C_INITIATE && cred_usage != GSS_C_BOTH) {
*minor_status = GSS_KRB5_S_G_BAD_USAGE;
return GSS_S_FAILURE;
}
GSSAPI_KRB5_INIT (); GSSAPI_KRB5_INIT ();
*output_cred_handle = NULL; *output_cred_handle = NULL;
@@ -280,7 +285,8 @@ OM_uint32 gss_acquire_cred
free(handle); free(handle);
return (ret); return (ret);
} }
} else if (cred_usage == GSS_C_ACCEPT || cred_usage == GSS_C_BOTH) { }
if (cred_usage == GSS_C_ACCEPT || cred_usage == GSS_C_BOTH) {
ret = acquire_acceptor_cred(minor_status, desired_name, time_req, ret = acquire_acceptor_cred(minor_status, desired_name, time_req,
desired_mechs, cred_usage, handle, actual_mechs, time_rec); desired_mechs, cred_usage, handle, actual_mechs, time_rec);
if (ret != GSS_S_COMPLETE) { if (ret != GSS_S_COMPLETE) {
@@ -288,11 +294,6 @@ OM_uint32 gss_acquire_cred
free(handle); free(handle);
return (ret); return (ret);
} }
} else {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
free(handle);
*minor_status = GSS_KRB5_S_G_BAD_USAGE;
return GSS_S_FAILURE;
} }
ret = gss_create_empty_oid_set(minor_status, &handle->mechanisms); ret = gss_create_empty_oid_set(minor_status, &handle->mechanisms);
if (ret == GSS_S_COMPLETE) if (ret == GSS_S_COMPLETE)

View File

@@ -233,6 +233,11 @@ OM_uint32 gss_acquire_cred
gss_cred_id_t handle; gss_cred_id_t handle;
OM_uint32 ret; OM_uint32 ret;
if (cred_usage != GSS_C_ACCEPT && cred_usage != GSS_C_INITIATE && cred_usage != GSS_C_BOTH) {
*minor_status = GSS_KRB5_S_G_BAD_USAGE;
return GSS_S_FAILURE;
}
GSSAPI_KRB5_INIT (); GSSAPI_KRB5_INIT ();
*output_cred_handle = NULL; *output_cred_handle = NULL;
@@ -280,7 +285,8 @@ OM_uint32 gss_acquire_cred
free(handle); free(handle);
return (ret); return (ret);
} }
} else if (cred_usage == GSS_C_ACCEPT || cred_usage == GSS_C_BOTH) { }
if (cred_usage == GSS_C_ACCEPT || cred_usage == GSS_C_BOTH) {
ret = acquire_acceptor_cred(minor_status, desired_name, time_req, ret = acquire_acceptor_cred(minor_status, desired_name, time_req,
desired_mechs, cred_usage, handle, actual_mechs, time_rec); desired_mechs, cred_usage, handle, actual_mechs, time_rec);
if (ret != GSS_S_COMPLETE) { if (ret != GSS_S_COMPLETE) {
@@ -288,11 +294,6 @@ OM_uint32 gss_acquire_cred
free(handle); free(handle);
return (ret); return (ret);
} }
} else {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
free(handle);
*minor_status = GSS_KRB5_S_G_BAD_USAGE;
return GSS_S_FAILURE;
} }
ret = gss_create_empty_oid_set(minor_status, &handle->mechanisms); ret = gss_create_empty_oid_set(minor_status, &handle->mechanisms);
if (ret == GSS_S_COMPLETE) if (ret == GSS_S_COMPLETE)