summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2013-01-29 14:14:06 -0500
committerKristian Høgsberg <krh@bitplanet.net>2013-02-14 15:59:49 -0500
commitb65a207388840eb51d1cd74aaba9863c4423d21c (patch)
treeb8a805e4dd82c6848731bbc230ee8918e0320d98
parentcdfc4c2d45b48ab12c243bb7f011f1244b3b0a83 (diff)
downloadweston-b65a207388840eb51d1cd74aaba9863c4423d21c.tar.gz
weston-launch: Clear environment and set it up from scratch
With recent systemd[1] XDG_VTNR will leak through to pam, which ends up setting a vtnr pam argument with the wrong value. The fix is to clear XDG_VTNR first, but what we should have been doing all along is resetting the environment. Thanks to Ray Strode for helping debug this. [1] http://cgit.freedesktop.org/systemd/systemd/commit/?id=a8573ccc35a4efe8900be5d48c6c803670540c2b
-rw-r--r--src/weston-launch.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/weston-launch.c b/src/weston-launch.c
index 583e85a2..bc7f8a2f 100644
--- a/src/weston-launch.c
+++ b/src/weston-launch.c
@@ -556,6 +556,12 @@ main(int argc, char *argv[])
if (wl.pw == NULL)
error(1, errno, "failed to get username");
+ clearenv();
+ setenv("USER", wl.pw->pw_name, 1);
+ setenv("LOGNAME", wl.pw->pw_name, 1);
+ setenv("HOME", wl.pw->pw_dir, 1);
+ setenv("SHELL", wl.pw->pw_shell, 1);
+
if (!weston_launch_allowed(&wl))
error(1, 0, "Permission denied. You should either:\n"
#ifdef HAVE_SYSTEMD_LOGIN
@@ -605,12 +611,6 @@ main(int argc, char *argv[])
sleep(sleep_fork);
}
- if (new_user) {
- setenv("USER", wl.pw->pw_name, 1);
- setenv("LOGNAME", wl.pw->pw_name, 1);
- setenv("HOME", wl.pw->pw_dir, 1);
- setenv("SHELL", wl.pw->pw_shell, 1);
- }
env = pam_getenvlist(wl.ph);
if (env) {
for (i = 0; env[i]; ++i) {