mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
util: Use current uid and gid if they are passed as -1 for virDirCreate
All the callers of virDirCreate are updated incidentally.
This commit is contained in:
parent
ea9509b9e8
commit
67d79ad7ff
@ -786,17 +786,10 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
/* Now create the final dir in the path with the uid/gid/mode
|
||||
* requested in the config. If the dir already exists, just set
|
||||
* the perms. */
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
||||
uid = (pool->def->target.perms.uid == (uid_t) -1)
|
||||
? getuid() : pool->def->target.perms.uid;
|
||||
gid = (pool->def->target.perms.gid == (gid_t) -1)
|
||||
? getgid() : pool->def->target.perms.gid;
|
||||
|
||||
if ((err = virDirCreate(pool->def->target.path,
|
||||
pool->def->target.perms.mode,
|
||||
uid, gid,
|
||||
pool->def->target.perms.uid,
|
||||
pool->def->target.perms.gid,
|
||||
VIR_DIR_CREATE_FORCE_PERMS |
|
||||
VIR_DIR_CREATE_ALLOW_EXIST |
|
||||
(pool->def->type == VIR_STORAGE_POOL_NETFS
|
||||
@ -808,9 +801,9 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
|
||||
/* Reflect the actual uid and gid to the config. */
|
||||
if (pool->def->target.perms.uid == (uid_t) -1)
|
||||
pool->def->target.perms.uid = uid;
|
||||
pool->def->target.perms.uid = getuid();
|
||||
if (pool->def->target.perms.gid == (gid_t) -1)
|
||||
pool->def->target.perms.gid = gid;
|
||||
pool->def->target.perms.gid = getgid();
|
||||
|
||||
if (flags != 0) {
|
||||
ret = virStorageBackendMakeFileSystem(pool, flags);
|
||||
@ -1050,13 +1043,9 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
return -1;
|
||||
}
|
||||
|
||||
uid_t uid = (vol->target.perms.uid == -1)
|
||||
? getuid() : vol->target.perms.uid;
|
||||
gid_t gid = (vol->target.perms.gid == -1)
|
||||
? getgid() : vol->target.perms.gid;
|
||||
|
||||
if ((err = virDirCreate(vol->target.path, vol->target.perms.mode,
|
||||
uid, gid,
|
||||
vol->target.perms.uid,
|
||||
vol->target.perms.gid,
|
||||
VIR_DIR_CREATE_FORCE_PERMS |
|
||||
(pool->def->type == VIR_STORAGE_POOL_NETFS
|
||||
? VIR_DIR_CREATE_AS_UID : 0))) < 0) {
|
||||
|
@ -1126,6 +1126,12 @@ int virDirCreate(const char *path, mode_t mode,
|
||||
int waitret;
|
||||
int status, ret = 0;
|
||||
|
||||
/* allow using -1 to mean "current value" */
|
||||
if (uid == (uid_t) -1)
|
||||
uid = getuid();
|
||||
if (gid == (gid_t) -1)
|
||||
gid = getgid();
|
||||
|
||||
if ((!(flags & VIR_DIR_CREATE_AS_UID))
|
||||
|| (getuid() != 0)
|
||||
|| ((uid == 0) && (gid == 0))
|
||||
|
Loading…
x
Reference in New Issue
Block a user