diff options
author | Steve Langasek <steve.langasek@canonical.com> | 2013-03-08 12:00:00 +0100 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2013-04-11 13:30:49 -0400 |
commit | 5aef9722c15a350fbf8b20a3b58419f156cc7c98 (patch) | |
tree | 97a92aea19cb5e26fdac708c3e3300e4f7a6a618 | |
parent | e267e965ac30e29cb2de1e2ba668e7d00ab5b700 (diff) | |
download | polkit-5aef9722c15a350fbf8b20a3b58419f156cc7c98.tar.gz |
pkexec: Set process environment from pam_getenvlist()
Various pam modules provide environment variables that are intended to be set
in the environment of the pam session. pkexec needs to process the output of
pam_getenvlist() to get these.
https://bugs.freedesktop.org/show_bug.cgi?id=62016
-rw-r--r-- | src/programs/pkexec.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c index f42a3bb..529898a 100644 --- a/src/programs/pkexec.c +++ b/src/programs/pkexec.c @@ -145,6 +145,7 @@ open_session (const gchar *user_to_auth) gboolean ret; gint rc; pam_handle_t *pam_h; + char **envlist; struct pam_conv conversation; ret = FALSE; @@ -176,6 +177,15 @@ open_session (const gchar *user_to_auth) ret = TRUE; + envlist = pam_getenvlist (pam_h); + if (envlist != NULL) + { + guint n; + for (n = 0; envlist[n]; n++) + putenv (envlist[n]); + free (envlist); + } + out: if (pam_h != NULL) pam_end (pam_h, rc); |