summaryrefslogtreecommitdiff
path: root/source3/libads/kerberos.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libads/kerberos.c')
-rw-r--r--source3/libads/kerberos.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
index 9eb4d9da46..dc1edb3cde 100644
--- a/source3/libads/kerberos.c
+++ b/source3/libads/kerberos.c
@@ -608,6 +608,17 @@ void kerberos_derive_salting_principal(krb5_context context,
char *service_principal)
{
int i;
+ BOOL free_ccache = False;
+
+ if (ccache == NULL) {
+ krb5_error_code ret;
+ if ((ret = krb5_cc_resolve(context, LIBADS_CCACHE_NAME, &ccache)) != 0) {
+ DEBUG(0, ("kerberos_derive_salting_principal: krb5_cc_resolve for %s failed: %s\n",
+ LIBADS_CCACHE_NAME, error_message(ret)));
+ return;
+ }
+ free_ccache = True;
+ }
/* Try for each enctype separately, because the rules are
* different for different enctypes. */
@@ -629,6 +640,10 @@ void kerberos_derive_salting_principal(krb5_context context,
enctypes[i],
enctypes);
}
+
+ if (free_ccache && ccache) {
+ krb5_cc_close(context, ccache);
+ }
}
/************************************************************************