summaryrefslogtreecommitdiff
path: root/src/programs
diff options
context:
space:
mode:
authorSteve Langasek <steve.langasek@canonical.com>2013-03-08 12:00:00 +0100
committerColin Walters <walters@verbum.org>2013-04-11 13:30:49 -0400
commit5aef9722c15a350fbf8b20a3b58419f156cc7c98 (patch)
tree97a92aea19cb5e26fdac708c3e3300e4f7a6a618 /src/programs
parente267e965ac30e29cb2de1e2ba668e7d00ab5b700 (diff)
downloadpolkit-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
Diffstat (limited to 'src/programs')
-rw-r--r--src/programs/pkexec.c10
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);