xorg-wrapper: when starting the server as root, reset its environment

When the server is privileged, we shouldn't be passing the user's
environment directly.

Clearing the environment is recommended by the libdbus maintainers, see
https://bugs.freedesktop.org/show_bug.cgi?id=52202

v2: rename envp to empty_envp (Jeremy)
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83849
Signed-off-by: Julien Cristau <jcristau@debian.org>
This commit is contained in:
Julien Cristau 2015-10-19 15:42:30 +02:00 committed by Adam Jackson
parent 08c4912406
commit 1d4aa67242

View File

@ -194,6 +194,7 @@ int main(int argc, char *argv[])
int total_cards = 0;
int allowed = CONSOLE_ONLY;
int needs_root_rights = -1;
char *const empty_envp[1] = { NULL, };
progname = argv[0];
@ -271,7 +272,10 @@ int main(int argc, char *argv[])
}
argv[0] = buf;
(void) execv(argv[0], argv);
if (getuid() == geteuid())
(void) execv(argv[0], argv);
else
(void) execve(argv[0], argv, empty_envp);
fprintf(stderr, "%s: Failed to execute %s: %s\n",
progname, buf, strerror(errno));
exit(1);