virCommandAddEnvBuffer;
virCommandAddEnvFormat;
virCommandAddEnvPair;
-virCommandAddEnvPassAllowSUID;
-virCommandAddEnvPassBlockSUID;
+virCommandAddEnvPass;
virCommandAddEnvPassCommon;
virCommandAddEnvString;
virCommandAddEnvXDG;
cmd = virCommandNew(vm->def->emulator);
/* The controller may call ip command, so we have to retain PATH. */
- virCommandAddEnvPassBlockSUID(cmd, "PATH", "/bin:/usr/bin");
+ virCommandAddEnvPass(cmd, "PATH");
virCommandAddEnvFormat(cmd, "LIBVIRT_DEBUG=%d",
virLogGetDefaultPriority());
* use QEMU's host audio drivers, possibly SDL too
* User can set these two before starting libvirtd
*/
- virCommandAddEnvPassBlockSUID(cmd, "QEMU_AUDIO_DRV", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "SDL_AUDIODRIVER", NULL);
+ virCommandAddEnvPass(cmd, "QEMU_AUDIO_DRV");
+ virCommandAddEnvPass(cmd, "SDL_AUDIODRIVER");
virCommandAddArg(cmd, "-display");
virBufferAddLit(&opt, "sdl");
* security issues and might not work when using VNC.
*/
if (cfg->vncAllowHostAudio)
- virCommandAddEnvPassBlockSUID(cmd, "QEMU_AUDIO_DRV", NULL);
+ virCommandAddEnvPass(cmd, "QEMU_AUDIO_DRV");
else
virCommandAddEnvString(cmd, "QEMU_AUDIO_DRV=none");
virCommandAddArg(cmd, "none");
if (cfg->nogfxAllowHostAudio)
- virCommandAddEnvPassBlockSUID(cmd, "QEMU_AUDIO_DRV", NULL);
+ virCommandAddEnvPass(cmd, "QEMU_AUDIO_DRV");
else
virCommandAddEnvString(cmd, "QEMU_AUDIO_DRV=none");
}
NULL);
virCommandAddEnvPassCommon(cmd);
- virCommandAddEnvPassBlockSUID(cmd, "XDG_CACHE_HOME", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "XDG_CONFIG_HOME", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "XDG_RUNTIME_DIR", NULL);
+ virCommandAddEnvPass(cmd, "XDG_CACHE_HOME");
+ virCommandAddEnvPass(cmd, "XDG_CONFIG_HOME");
+ virCommandAddEnvPass(cmd, "XDG_RUNTIME_DIR");
virCommandClearCaps(cmd);
virCommandDaemonize(cmd);
ret = virCommandRun(cmd, NULL);
cmd = virCommandNew(binary ? binary : "ssh");
virCommandAddEnvPassCommon(cmd);
- virCommandAddEnvPassBlockSUID(cmd, "KRB5CCNAME", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "SSH_AUTH_SOCK", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "SSH_ASKPASS", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "DISPLAY", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "XAUTHORITY", NULL);
+ virCommandAddEnvPass(cmd, "KRB5CCNAME");
+ virCommandAddEnvPass(cmd, "SSH_AUTH_SOCK");
+ virCommandAddEnvPass(cmd, "SSH_ASKPASS");
+ virCommandAddEnvPass(cmd, "DISPLAY");
+ virCommandAddEnvPass(cmd, "XAUTHORITY");
virCommandClearCaps(cmd);
if (service)
/**
- * virCommandAddEnvPassAllowSUID:
+ * virCommandAddEnvPass:
* @cmd: the command to modify
* @name: the name to look up in current environment
*
* Pass an environment variable to the child
* using current process' value
- *
- * Allow to be passed even if setuid
*/
void
-virCommandAddEnvPassAllowSUID(virCommandPtr cmd, const char *name)
+virCommandAddEnvPass(virCommandPtr cmd, const char *name)
{
const char *value;
if (!cmd || cmd->has_error)
}
-/**
- * virCommandAddEnvPassBlockSUID:
- * @cmd: the command to modify
- * @name: the name to look up in current environment
- * @defvalue: value to return if running setuid, may be NULL
- *
- * Pass an environment variable to the child
- * using current process' value.
- *
- * Do not pass if running setuid
- */
-void
-virCommandAddEnvPassBlockSUID(virCommandPtr cmd, const char *name, const char *defvalue)
-{
- const char *value;
- if (!cmd || cmd->has_error)
- return;
-
- value = virGetEnvBlockSUID(name);
- if (!value)
- value = defvalue;
- if (value)
- virCommandAddEnvPair(cmd, name, value);
-}
-
-
/**
* virCommandAddEnvPassCommon:
* @cmd: the command to modify
virCommandAddEnvPair(cmd, "LC_ALL", "C");
- virCommandAddEnvPassBlockSUID(cmd, "LD_PRELOAD", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "LD_LIBRARY_PATH", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "PATH", "/bin:/usr/bin");
- virCommandAddEnvPassBlockSUID(cmd, "HOME", NULL);
- virCommandAddEnvPassAllowSUID(cmd, "USER");
- virCommandAddEnvPassAllowSUID(cmd, "LOGNAME");
- virCommandAddEnvPassBlockSUID(cmd, "TMPDIR", NULL);
+ virCommandAddEnvPass(cmd, "LD_PRELOAD");
+ virCommandAddEnvPass(cmd, "LD_LIBRARY_PATH");
+ virCommandAddEnvPass(cmd, "PATH");
+ virCommandAddEnvPass(cmd, "HOME");
+ virCommandAddEnvPass(cmd, "USER");
+ virCommandAddEnvPass(cmd, "LOGNAME");
+ virCommandAddEnvPass(cmd, "TMPDIR");
}
void virCommandAddEnvBuffer(virCommandPtr cmd,
virBufferPtr buf);
-void virCommandAddEnvPassBlockSUID(virCommandPtr cmd,
- const char *name,
- const char *defvalue) ATTRIBUTE_NONNULL(2);
-
-void virCommandAddEnvPassAllowSUID(virCommandPtr cmd,
- const char *name) ATTRIBUTE_NONNULL(2);
+void virCommandAddEnvPass(virCommandPtr cmd,
+ const char *name) ATTRIBUTE_NONNULL(2);
void virCommandAddEnvPassCommon(virCommandPtr cmd);
{
virCommandPtr cmd = virCommandNew(abs_builddir "/commandhelper");
- virCommandAddEnvPassBlockSUID(cmd, "DISPLAY", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "DOESNOTEXIST", NULL);
+ virCommandAddEnvPass(cmd, "DISPLAY");
+ virCommandAddEnvPass(cmd, "DOESNOTEXIST");
if (virCommandRun(cmd, NULL) < 0) {
printf("Cannot run child %s\n", virGetLastErrorMessage());
virCommandPtr cmd = virCommandNew(abs_builddir "/commandhelper");
virCommandAddEnvPassCommon(cmd);
- virCommandAddEnvPassBlockSUID(cmd, "DISPLAY", NULL);
- virCommandAddEnvPassBlockSUID(cmd, "DOESNOTEXIST", NULL);
+ virCommandAddEnvPass(cmd, "DISPLAY");
+ virCommandAddEnvPass(cmd, "DOESNOTEXIST");
if (virCommandRun(cmd, NULL) < 0) {
printf("Cannot run child %s\n", virGetLastErrorMessage());