util: set uid/gid of created directory even when zero
Call chown() in create_dir() even when the specified uid/gid is zero. This is needed on BSD systems, where directories are created with gid of the parent directory.
This commit is contained in:
parent
b6a27df5b9
commit
30b6213910
2 changed files with 5 additions and 5 deletions
4
util.c
4
util.c
|
@ -945,8 +945,8 @@ create_dir(char *p, mode_t mode, uid_t uid, gid_t gid)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Change its ownership if requested */
|
||||
if ((uid || gid) && chown(p, uid, gid) < 0) {
|
||||
/* Set its owner */
|
||||
if (chown(p, uid, gid) < 0) {
|
||||
LOG(LOGS_ERR, LOGF_Util, "Could not change ownership of %s : %s", p, strerror(errno));
|
||||
/* Don't leave it there with incorrect ownership */
|
||||
rmdir(p);
|
||||
|
|
6
util.h
6
util.h
|
@ -133,9 +133,9 @@ extern int UTI_SetQuitSignalsHandler(void (*handler)(int));
|
|||
/* Get directory (as an allocated string) for a path */
|
||||
extern char *UTI_PathToDir(const char *path);
|
||||
|
||||
/* Create a directory with a specified mode (umasked) and set its uid/gid
|
||||
(if not 0). Create also any parent directories that don't exist with mode
|
||||
755 and default uid/gid. Returns 1 if created or already exists (even with
|
||||
/* Create a directory with a specified mode (umasked) and set its uid/gid.
|
||||
Create also any parent directories that don't exist with mode 755 and
|
||||
default uid/gid. Returns 1 if created or already exists (even with
|
||||
different mode/uid/gid), 0 otherwise. */
|
||||
extern int UTI_CreateDirAndParents(const char *path, mode_t mode, uid_t uid, gid_t gid);
|
||||
|
||||
|
|
Loading…
Reference in a new issue