From e2e9c08851e8fe2b7d843c8fabc7cbc0fb298536 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Jul 10 2013 22:23:46 +0000 Subject: Return right directory name for dircache Dircache can be either file or directory. Wrong value was used when dircache was itself directory. https://fedorahosted.org/sssd/ticket/2002 --- diff --git a/src/providers/krb5/krb5_utils.c b/src/providers/krb5/krb5_utils.c index 4811a73..860c71b 100644 --- a/src/providers/krb5/krb5_utils.c +++ b/src/providers/krb5/krb5_utils.c @@ -1046,12 +1046,16 @@ cc_dir_check_existing(const char *location, uid_t uid, goto done; } - dir = dirname(tmp); - if (!dir) { - DEBUG(SSSDBG_CRIT_FAILURE, - ("Cannot base get directory of %s\n", location)); - ret = EINVAL; - goto done; + if (0 == strncmp(location, "DIR::", 5)) { + dir = dirname(tmp); + if (!dir) { + DEBUG(SSSDBG_CRIT_FAILURE, + ("Cannot get base directory of %s.\n", tmp)); + ret = EINVAL; + goto done; + } + } else { + dir = tmp; } ret = cc_residual_is_used(uid, dir, SSS_KRB5_TYPE_DIR, &active);