diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2012-10-14 14:51:29 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2012-10-14 14:51:29 +0000 |
commit | 65d2384e130503dd88770c5bff9a59132e408bad (patch) | |
tree | b03830221452c054e700a8197ff9c0ea0feffa18 | |
parent | 8ea5c807bd972aed3be3f1452e4d305e0f81d296 (diff) |
if nslcd creates the state directory, try to set the right ownership
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1795 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r-- | nslcd/nslcd.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/nslcd/nslcd.c b/nslcd/nslcd.c index 54b97f3..a59b640 100644 --- a/nslcd/nslcd.c +++ b/nslcd/nslcd.c @@ -273,10 +273,16 @@ static void exithandler(void) /* create the directory for the specified file to reside in */ static void mkdirname(const char *filename) { - char *tmpname; + char *tmpname,*path; tmpname=strdup(filename); if (tmpname==NULL) return; - (void)mkdir(dirname(tmpname),(mode_t)0755); + path=dirname(tmpname); + if (mkdir(path,(mode_t)0755)==0) + { + /* if directory was just created, set correct ownership */ + if (lchown(path,nslcd_cfg->ldc_uid,nslcd_cfg->ldc_gid)<0) + log_log(LOG_WARNING,"problem setting permissions for %s: %s",path,strerror(errno)); + } free(tmpname); } |