diff options
Diffstat (limited to 'src/lib/gssapi/krb5/acquire_cred.c')
-rw-r--r-- | src/lib/gssapi/krb5/acquire_cred.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c index e652c664c1..0a0de14b99 100644 --- a/src/lib/gssapi/krb5/acquire_cred.c +++ b/src/lib/gssapi/krb5/acquire_cred.c @@ -331,6 +331,9 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, OM_uint32 ret; krb5_error_code code; + if (GSS_ERROR(kg_get_context(minor_status, &context))) + return(GSS_S_FAILURE); + /* make sure all outputs are valid */ *output_cred_handle = NULL; @@ -399,13 +402,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, /* if requested, acquire credentials for accepting */ /* this will fill in cred->princ if the desired_name is not specified */ - code = krb5_init_context(&context); - if (code) { - xfree(cred); - *minor_status = (OM_uint32) code; - return GSS_S_FAILURE; - } - if ((cred_usage == GSS_C_ACCEPT) || (cred_usage == GSS_C_BOTH)) if ((ret = acquire_accept_cred(context, minor_status, desired_name, @@ -414,7 +410,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->princ) krb5_free_principal(context, cred->princ); xfree(cred); - krb5_free_context(context); /* minor_status set by acquire_accept_cred() */ return(ret); } @@ -435,7 +430,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->princ) krb5_free_principal(context, cred->princ); xfree(cred); - krb5_free_context(context); /* minor_status set by acquire_init_cred() */ return(ret); } @@ -450,7 +444,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->keytab) (void)krb5_kt_close(context, cred->keytab); xfree(cred); - krb5_free_context(context); *minor_status = code; return(GSS_S_FAILURE); } @@ -473,7 +466,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->princ) krb5_free_principal(context, cred->princ); xfree(cred); - krb5_free_context(context); *minor_status = code; return(GSS_S_FAILURE); } @@ -502,7 +494,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->princ) krb5_free_principal(context, cred->princ); xfree(cred); - krb5_free_context(context); /* *minor_status set above */ return(ret); } @@ -520,7 +511,6 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (cred->princ) krb5_free_principal(context, cred->princ); xfree(cred); - krb5_free_context(context); *minor_status = (OM_uint32) G_VALIDATE_FAILED; return(GSS_S_FAILURE); } @@ -532,6 +522,5 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req, if (actual_mechs) *actual_mechs = ret_mechs; - krb5_free_context(context); return(GSS_S_COMPLETE); } |