diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2013-01-29 14:14:06 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-02-14 15:59:49 -0500 |
commit | b65a207388840eb51d1cd74aaba9863c4423d21c (patch) | |
tree | b8a805e4dd82c6848731bbc230ee8918e0320d98 | |
parent | cdfc4c2d45b48ab12c243bb7f011f1244b3b0a83 (diff) | |
download | weston-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.c | 12 |
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) { |