mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Remove uid param from directory lookup APIs
Remove the uid param from virGetUserConfigDirectory, virGetUserCacheDirectory, virGetUserRuntimeDirectory, and virGetUserDirectory These functions were universally called with the results of getuid() or geteuid(). To make it practical to port to Win32, remove the uid parameter and hardcode geteuid() Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
@@ -207,7 +207,7 @@ daemonConfigFilePath(bool privileged, char **configfile)
|
|||||||
} else {
|
} else {
|
||||||
char *configdir = NULL;
|
char *configdir = NULL;
|
||||||
|
|
||||||
if (!(configdir = virGetUserConfigDirectory(geteuid())))
|
if (!(configdir = virGetUserConfigDirectory()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virAsprintf(configfile, "%s/libvirtd.conf", configdir) < 0) {
|
if (virAsprintf(configfile, "%s/libvirtd.conf", configdir) < 0) {
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ daemonPidFilePath(bool privileged,
|
|||||||
char *rundir = NULL;
|
char *rundir = NULL;
|
||||||
mode_t old_umask;
|
mode_t old_umask;
|
||||||
|
|
||||||
if (!(rundir = virGetUserRuntimeDirectory(geteuid())))
|
if (!(rundir = virGetUserRuntimeDirectory()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
old_umask = umask(077);
|
old_umask = umask(077);
|
||||||
@@ -290,7 +290,7 @@ daemonUnixSocketPaths(struct daemonConfig *config,
|
|||||||
char *rundir = NULL;
|
char *rundir = NULL;
|
||||||
mode_t old_umask;
|
mode_t old_umask;
|
||||||
|
|
||||||
if (!(rundir = virGetUserRuntimeDirectory(geteuid())))
|
if (!(rundir = virGetUserRuntimeDirectory()))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
old_umask = umask(077);
|
old_umask = umask(077);
|
||||||
@@ -634,7 +634,7 @@ daemonSetupLogging(struct daemonConfig *config,
|
|||||||
LOCALSTATEDIR) == -1)
|
LOCALSTATEDIR) == -1)
|
||||||
goto no_memory;
|
goto no_memory;
|
||||||
} else {
|
} else {
|
||||||
char *logdir = virGetUserCacheDirectory(geteuid());
|
char *logdir = virGetUserCacheDirectory();
|
||||||
mode_t old_umask;
|
mode_t old_umask;
|
||||||
|
|
||||||
if (!logdir)
|
if (!logdir)
|
||||||
@@ -783,7 +783,7 @@ static int migrateProfile(void)
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
mode_t old_umask;
|
mode_t old_umask;
|
||||||
|
|
||||||
if (!(home = virGetUserDirectory(geteuid())))
|
if (!(home = virGetUserDirectory()))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virAsprintf(&old_base, "%s/.libvirt", home) < 0) {
|
if (virAsprintf(&old_base, "%s/.libvirt", home) < 0) {
|
||||||
@@ -791,7 +791,7 @@ static int migrateProfile(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if the new directory is there or the old one is not: do nothing */
|
/* if the new directory is there or the old one is not: do nothing */
|
||||||
if (!(config_dir = virGetUserConfigDirectory(geteuid())))
|
if (!(config_dir = virGetUserConfigDirectory()))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!virFileIsDir(old_base) || virFileExists(config_dir)) {
|
if (!virFileIsDir(old_base) || virFileExists(config_dir)) {
|
||||||
@@ -1112,7 +1112,7 @@ int main(int argc, char **argv) {
|
|||||||
if (privileged) {
|
if (privileged) {
|
||||||
run_dir = strdup(LOCALSTATEDIR "/run/libvirt");
|
run_dir = strdup(LOCALSTATEDIR "/run/libvirt");
|
||||||
} else {
|
} else {
|
||||||
run_dir = virGetUserRuntimeDirectory(geteuid());
|
run_dir = virGetUserRuntimeDirectory();
|
||||||
|
|
||||||
if (!run_dir) {
|
if (!run_dir) {
|
||||||
VIR_ERROR(_("Can't determine user directory"));
|
VIR_ERROR(_("Can't determine user directory"));
|
||||||
|
|||||||
@@ -926,7 +926,7 @@ virConnectGetConfigFilePath(void)
|
|||||||
SYSCONFDIR) < 0)
|
SYSCONFDIR) < 0)
|
||||||
goto no_memory;
|
goto no_memory;
|
||||||
} else {
|
} else {
|
||||||
char *userdir = virGetUserConfigDirectory(geteuid());
|
char *userdir = virGetUserConfigDirectory();
|
||||||
if (!userdir)
|
if (!userdir)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|||||||
@@ -260,7 +260,6 @@ networkAutostartConfigs(struct network_driver *driver) {
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
networkStartup(int privileged) {
|
networkStartup(int privileged) {
|
||||||
uid_t uid = geteuid();
|
|
||||||
char *base = NULL;
|
char *base = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(driverState) < 0)
|
if (VIR_ALLOC(driverState) < 0)
|
||||||
@@ -280,7 +279,7 @@ networkStartup(int privileged) {
|
|||||||
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
char *userdir = virGetUserCacheDirectory(uid);
|
char *userdir = virGetUserCacheDirectory();
|
||||||
|
|
||||||
if (!userdir)
|
if (!userdir)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -292,7 +291,7 @@ networkStartup(int privileged) {
|
|||||||
}
|
}
|
||||||
VIR_FREE(userdir);
|
VIR_FREE(userdir);
|
||||||
|
|
||||||
userdir = virGetUserConfigDirectory(uid);
|
userdir = virGetUserConfigDirectory();
|
||||||
if (virAsprintf(&base, "%s", userdir) == -1) {
|
if (virAsprintf(&base, "%s", userdir) == -1) {
|
||||||
VIR_FREE(userdir);
|
VIR_FREE(userdir);
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
|||||||
@@ -86,8 +86,7 @@ nwfilterDriverStartup(int privileged) {
|
|||||||
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
uid_t uid = geteuid();
|
base = virGetUserConfigDirectory();
|
||||||
base = virGetUserConfigDirectory(uid);
|
|
||||||
if (!base)
|
if (!base)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -977,7 +977,7 @@ openSSHSession(virConnectPtr conn, virConnectAuthPtr auth,
|
|||||||
int ret;
|
int ret;
|
||||||
char *pubkey = NULL;
|
char *pubkey = NULL;
|
||||||
char *pvtkey = NULL;
|
char *pvtkey = NULL;
|
||||||
char *userhome = virGetUserDirectory(geteuid());
|
char *userhome = virGetUserDirectory();
|
||||||
struct stat pvt_stat, pub_stat;
|
struct stat pvt_stat, pub_stat;
|
||||||
|
|
||||||
if (userhome == NULL)
|
if (userhome == NULL)
|
||||||
|
|||||||
@@ -523,11 +523,10 @@ qemudStartup(int privileged) {
|
|||||||
"%s/lib/libvirt/qemu/dump", LOCALSTATEDIR) == -1)
|
"%s/lib/libvirt/qemu/dump", LOCALSTATEDIR) == -1)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
uid_t uid = geteuid();
|
|
||||||
char *rundir;
|
char *rundir;
|
||||||
char *cachedir;
|
char *cachedir;
|
||||||
|
|
||||||
cachedir = virGetUserCacheDirectory(uid);
|
cachedir = virGetUserCacheDirectory();
|
||||||
if (!cachedir)
|
if (!cachedir)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@@ -542,7 +541,7 @@ qemudStartup(int privileged) {
|
|||||||
}
|
}
|
||||||
VIR_FREE(cachedir);
|
VIR_FREE(cachedir);
|
||||||
|
|
||||||
rundir = virGetUserRuntimeDirectory(uid);
|
rundir = virGetUserRuntimeDirectory();
|
||||||
if (!rundir)
|
if (!rundir)
|
||||||
goto error;
|
goto error;
|
||||||
if (virAsprintf(&qemu_driver->stateDir, "%s/qemu/run", rundir) == -1) {
|
if (virAsprintf(&qemu_driver->stateDir, "%s/qemu/run", rundir) == -1) {
|
||||||
@@ -551,7 +550,7 @@ qemudStartup(int privileged) {
|
|||||||
}
|
}
|
||||||
VIR_FREE(rundir);
|
VIR_FREE(rundir);
|
||||||
|
|
||||||
base = virGetUserConfigDirectory(uid);
|
base = virGetUserConfigDirectory();
|
||||||
if (!base)
|
if (!base)
|
||||||
goto error;
|
goto error;
|
||||||
if (virAsprintf(&qemu_driver->libDir, "%s/qemu/lib", base) == -1)
|
if (virAsprintf(&qemu_driver->libDir, "%s/qemu/lib", base) == -1)
|
||||||
|
|||||||
@@ -578,7 +578,7 @@ doRemoteOpen (virConnectPtr conn,
|
|||||||
case trans_unix:
|
case trans_unix:
|
||||||
if (!sockname) {
|
if (!sockname) {
|
||||||
if (flags & VIR_DRV_OPEN_REMOTE_USER) {
|
if (flags & VIR_DRV_OPEN_REMOTE_USER) {
|
||||||
char *userdir = virGetUserRuntimeDirectory(getuid());
|
char *userdir = virGetUserRuntimeDirectory();
|
||||||
|
|
||||||
if (!userdir)
|
if (!userdir)
|
||||||
goto failed;
|
goto failed;
|
||||||
|
|||||||
@@ -774,7 +774,7 @@ static int virNetTLSContextLocateCredentials(const char *pkipath,
|
|||||||
/* Check to see if $HOME/.pki contains at least one of the
|
/* Check to see if $HOME/.pki contains at least one of the
|
||||||
* files and if so, use that
|
* files and if so, use that
|
||||||
*/
|
*/
|
||||||
userdir = virGetUserDirectory(getuid());
|
userdir = virGetUserDirectory();
|
||||||
|
|
||||||
if (!userdir)
|
if (!userdir)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
|||||||
@@ -1012,8 +1012,7 @@ secretDriverStartup(int privileged)
|
|||||||
if (base == NULL)
|
if (base == NULL)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
uid_t uid = geteuid();
|
base = virGetUserConfigDirectory();
|
||||||
base = virGetUserConfigDirectory(uid);
|
|
||||||
if (!base)
|
if (!base)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,8 +145,7 @@ storageDriverStartup(int privileged)
|
|||||||
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
if ((base = strdup (SYSCONFDIR "/libvirt")) == NULL)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
uid_t uid = geteuid();
|
base = virGetUserConfigDirectory();
|
||||||
base = virGetUserConfigDirectory(uid);
|
|
||||||
if (!base)
|
if (!base)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -392,7 +392,6 @@ cleanup:
|
|||||||
static int
|
static int
|
||||||
umlStartup(int privileged)
|
umlStartup(int privileged)
|
||||||
{
|
{
|
||||||
uid_t uid = geteuid();
|
|
||||||
char *base = NULL;
|
char *base = NULL;
|
||||||
char *userdir = NULL;
|
char *userdir = NULL;
|
||||||
|
|
||||||
@@ -418,7 +417,7 @@ umlStartup(int privileged)
|
|||||||
if (!uml_driver->domainEventState)
|
if (!uml_driver->domainEventState)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
userdir = virGetUserDirectory(uid);
|
userdir = virGetUserDirectory();
|
||||||
if (!userdir)
|
if (!userdir)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@@ -434,7 +433,7 @@ umlStartup(int privileged)
|
|||||||
"%s/run/libvirt/uml-guest", LOCALSTATEDIR) == -1)
|
"%s/run/libvirt/uml-guest", LOCALSTATEDIR) == -1)
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
} else {
|
} else {
|
||||||
base = virGetUserConfigDirectory(uid);
|
base = virGetUserConfigDirectory();
|
||||||
if (!base)
|
if (!base)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|||||||
@@ -2305,19 +2305,16 @@ static char *virGetGroupEnt(gid_t gid)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *virGetUserDirectory(uid_t uid)
|
char *virGetUserDirectory(void)
|
||||||
{
|
{
|
||||||
return virGetUserEnt(uid, VIR_USER_ENT_DIRECTORY);
|
return virGetUserEnt(geteuid(), VIR_USER_ENT_DIRECTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *virGetXDGDirectory(uid_t uid, const char *xdgenvname, const char *xdgdefdir)
|
static char *virGetXDGDirectory(const char *xdgenvname, const char *xdgdefdir)
|
||||||
{
|
{
|
||||||
const char *path = NULL;
|
const char *path = getenv(xdgenvname);
|
||||||
char *ret = NULL;
|
char *ret = NULL;
|
||||||
char *home = virGetUserEnt(uid, VIR_USER_ENT_DIRECTORY);
|
char *home = virGetUserEnt(geteuid(), VIR_USER_ENT_DIRECTORY);
|
||||||
|
|
||||||
if (uid == getuid())
|
|
||||||
path = getenv(xdgenvname);
|
|
||||||
|
|
||||||
if (path && path[0]) {
|
if (path && path[0]) {
|
||||||
if (virAsprintf(&ret, "%s/libvirt", path) < 0)
|
if (virAsprintf(&ret, "%s/libvirt", path) < 0)
|
||||||
@@ -2335,25 +2332,22 @@ static char *virGetXDGDirectory(uid_t uid, const char *xdgenvname, const char *x
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *virGetUserConfigDirectory(uid_t uid)
|
char *virGetUserConfigDirectory(void)
|
||||||
{
|
{
|
||||||
return virGetXDGDirectory(uid, "XDG_CONFIG_HOME", ".config");
|
return virGetXDGDirectory("XDG_CONFIG_HOME", ".config");
|
||||||
}
|
}
|
||||||
|
|
||||||
char *virGetUserCacheDirectory(uid_t uid)
|
char *virGetUserCacheDirectory(void)
|
||||||
{
|
{
|
||||||
return virGetXDGDirectory(uid, "XDG_CACHE_HOME", ".cache");
|
return virGetXDGDirectory("XDG_CACHE_HOME", ".cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
char *virGetUserRuntimeDirectory(uid_t uid)
|
char *virGetUserRuntimeDirectory(void)
|
||||||
{
|
{
|
||||||
const char *path = NULL;
|
const char *path = getenv("XDG_RUNTIME_DIR");
|
||||||
|
|
||||||
if (uid == getuid ())
|
|
||||||
path = getenv("XDG_RUNTIME_DIR");
|
|
||||||
|
|
||||||
if (!path || !path[0]) {
|
if (!path || !path[0]) {
|
||||||
return virGetUserCacheDirectory(uid);
|
return virGetUserCacheDirectory();
|
||||||
} else {
|
} else {
|
||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
@@ -2551,7 +2545,7 @@ error:
|
|||||||
#else /* HAVE_GETPWUID_R */
|
#else /* HAVE_GETPWUID_R */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
virGetUserDirectory(uid_t uid ATTRIBUTE_UNUSED)
|
virGetUserDirectory(void)
|
||||||
{
|
{
|
||||||
virUtilError(VIR_ERR_INTERNAL_ERROR,
|
virUtilError(VIR_ERR_INTERNAL_ERROR,
|
||||||
"%s", _("virGetUserDirectory is not available"));
|
"%s", _("virGetUserDirectory is not available"));
|
||||||
|
|||||||
@@ -228,10 +228,10 @@ char *virGetHostname(virConnectPtr conn);
|
|||||||
|
|
||||||
int virKillProcess(pid_t pid, int sig);
|
int virKillProcess(pid_t pid, int sig);
|
||||||
|
|
||||||
char *virGetUserDirectory(uid_t uid);
|
char *virGetUserDirectory(void);
|
||||||
char *virGetUserConfigDirectory(uid_t uid);
|
char *virGetUserConfigDirectory(void);
|
||||||
char *virGetUserCacheDirectory(uid_t uid);
|
char *virGetUserCacheDirectory(void);
|
||||||
char *virGetUserRuntimeDirectory(uid_t uid);
|
char *virGetUserRuntimeDirectory(void);
|
||||||
char *virGetUserName(uid_t uid);
|
char *virGetUserName(uid_t uid);
|
||||||
char *virGetGroupName(gid_t gid);
|
char *virGetGroupName(gid_t gid);
|
||||||
int virGetUserID(const char *name,
|
int virGetUserID(const char *name,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(userdir = virGetUserConfigDirectory(geteuid())))
|
if (!(userdir = virGetUserConfigDirectory()))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virAsprintf(path, "%s/auth.conf", userdir) < 0)
|
if (virAsprintf(path, "%s/auth.conf", userdir) < 0)
|
||||||
|
|||||||
@@ -15674,8 +15674,7 @@ cmdCd(vshControl *ctl, const vshCmd *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, "dir", &dir) <= 0) {
|
if (vshCommandOptString(cmd, "dir", &dir) <= 0) {
|
||||||
uid_t uid = geteuid();
|
dir = dir_malloced = virGetUserDirectory();
|
||||||
dir = dir_malloced = virGetUserDirectory(uid);
|
|
||||||
}
|
}
|
||||||
if (!dir)
|
if (!dir)
|
||||||
dir = "/";
|
dir = "/";
|
||||||
@@ -19872,7 +19871,7 @@ vshReadlineInit(vshControl *ctl)
|
|||||||
stifle_history(500);
|
stifle_history(500);
|
||||||
|
|
||||||
/* Prepare to read/write history from/to the $XDG_CACHE_HOME/virsh/history file */
|
/* Prepare to read/write history from/to the $XDG_CACHE_HOME/virsh/history file */
|
||||||
userdir = virGetUserCacheDirectory(getuid());
|
userdir = virGetUserCacheDirectory();
|
||||||
|
|
||||||
if (userdir == NULL) {
|
if (userdir == NULL) {
|
||||||
vshError(ctl, "%s", _("Could not determine home directory"));
|
vshError(ctl, "%s", _("Could not determine home directory"));
|
||||||
|
|||||||
Reference in New Issue
Block a user