diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2013-06-28 16:06:38 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-07-11 00:23:46 +0200 |
commit | e2e9c08851e8fe2b7d843c8fabc7cbc0fb298536 (patch) | |
tree | 3ca6a72c2b4b7ee298074d1fb524c5c158c36906 | |
parent | f6693151b0959f079271f5ab3976befb02ea91a9 (diff) | |
download | sssd-e2e9c08851e8fe2b7d843c8fabc7cbc0fb298536.tar.gz sssd-e2e9c08851e8fe2b7d843c8fabc7cbc0fb298536.tar.bz2 sssd-e2e9c08851e8fe2b7d843c8fabc7cbc0fb298536.zip |
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
-rw-r--r-- | src/providers/krb5/krb5_utils.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/providers/krb5/krb5_utils.c b/src/providers/krb5/krb5_utils.c index 4811a736..860c71b0 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); |