summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2012-10-14 14:51:29 +0000
committerArthur de Jong <arthur@arthurdejong.org>2012-10-14 14:51:29 +0000
commit65d2384e130503dd88770c5bff9a59132e408bad (patch)
treeb03830221452c054e700a8197ff9c0ea0feffa18
parent8ea5c807bd972aed3be3f1452e4d305e0f81d296 (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.c10
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);
}