From: Kristian Høgsberg Date: Tue, 29 Jan 2013 19:14:06 +0000 (-0500) Subject: weston-launch: Clear environment and set it up from scratch X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=272d243e00c742f9cffc8bc46d09b7d0f19dc43e;p=profile%2Fivi%2Fweston-ivi-shell.git 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 --- diff --git a/src/weston-launch.c b/src/weston-launch.c index 583e85a..bc7f8a2 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) {