= gss_acquire_cred should handle a NULL desired_name

= add a call to gssapi_krb5_init


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10976 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Jacques A. Vidrine
2002-05-09 01:41:37 +00:00
parent 4443604375
commit d28ddf2324
2 changed files with 34 additions and 10 deletions

View File

@@ -51,16 +51,20 @@ OM_uint32 gss_acquire_cred
krb5_error_code kret = 0;
krb5_ccache ccache;
gssapi_krb5_init ();
handle = (gss_cred_id_t)malloc(sizeof(*handle));
if (handle == GSS_C_NO_CREDENTIAL)
return GSS_S_FAILURE;
memset(handle, 0, sizeof (*handle));
ret = gss_duplicate_name(minor_status, desired_name, &handle->principal);
if (ret) {
free(handle);
return ret;
if (desired_name != NULL) {
ret = gss_duplicate_name(minor_status, desired_name, &handle->principal);
if (ret) {
free(handle);
return ret;
}
}
if (krb5_cc_default(gssapi_krb5_context, &ccache) == 0) {
@@ -71,7 +75,15 @@ OM_uint32 gss_acquire_cred
krb5_cc_close(gssapi_krb5_context, ccache);
goto try_keytab;
}
if (krb5_principal_compare(gssapi_krb5_context, handle->principal,
if (handle->principal == NULL) {
ret = gss_duplicate_name(minor_status, def_princ, &handle->principal);
if (ret) {
free(handle);
krb5_free_principal(gssapi_krb5_context, def_princ);
krb5_cc_close(gssapi_krb5_context, ccache);
return ret;
}
} else if (krb5_principal_compare(gssapi_krb5_context, handle->principal,
def_princ) == FALSE) {
krb5_free_principal(gssapi_krb5_context, def_princ);
krb5_cc_close(gssapi_krb5_context, ccache);