(acc_resolve): if open_default_ccache failed with ccErrCCacheNotFound
try again with create_default_ccache, this fixes the problem where the security server apperenly haven't started yet on Mac OS X git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14832 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -382,6 +382,23 @@ acc_alloc(krb5_context context, krb5_ccache *id)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
get_default_principal(krb5_context context, char **p)
|
||||||
|
{
|
||||||
|
krb5_error_code ret;
|
||||||
|
krb5_principal principal;
|
||||||
|
|
||||||
|
*p = NULL;
|
||||||
|
|
||||||
|
ret = _krb5_get_default_principal_local(context, &principal);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = krb5_unparse_name(context, principal, p);
|
||||||
|
krb5_free_principal(context, principal);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
acc_resolve(krb5_context context, krb5_ccache *id, const char *res)
|
acc_resolve(krb5_context context, krb5_ccache *id, const char *res)
|
||||||
{
|
{
|
||||||
@@ -398,6 +415,18 @@ acc_resolve(krb5_context context, krb5_ccache *id, const char *res)
|
|||||||
if (res == NULL || res[0] == '\0') {
|
if (res == NULL || res[0] == '\0') {
|
||||||
error = (*a->context->func->open_default_ccache)(a->context,
|
error = (*a->context->func->open_default_ccache)(a->context,
|
||||||
&a->ccache);
|
&a->ccache);
|
||||||
|
if (error == ccErrCCacheNotFound) {
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
ret = get_default_principal(context, &p);
|
||||||
|
if (ret == 0) {
|
||||||
|
error = (*a->context->func->create_default_ccache)(a->context,
|
||||||
|
cc_credentials_v5,
|
||||||
|
p,
|
||||||
|
&a->ccache);
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (error == 0)
|
if (error == 0)
|
||||||
a->cache_name = get_cc_name(a->ccache);
|
a->cache_name = get_cc_name(a->ccache);
|
||||||
} else {
|
} else {
|
||||||
@@ -422,20 +451,12 @@ acc_resolve(krb5_context context, krb5_ccache *id, const char *res)
|
|||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
acc_gen_new(krb5_context context, krb5_ccache *id)
|
acc_gen_new(krb5_context context, krb5_ccache *id)
|
||||||
{
|
{
|
||||||
krb5_principal principal;
|
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
cc_int32 error;
|
cc_int32 error;
|
||||||
krb5_acc *a;
|
krb5_acc *a;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
ret = krb5_get_default_principal(context, &principal);
|
ret = get_default_principal(context, &p);
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = krb5_unparse_name(context, principal, &p);
|
|
||||||
krb5_free_principal(context, principal);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = acc_alloc(context, id);
|
ret = acc_alloc(context, id);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Reference in New Issue
Block a user