]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
insert our private path into user's PATH
authorMichael Terry <michael.terry@canonical.com>
Thu, 28 Jul 2011 20:38:10 +0000 (16:38 -0400)
committerMichael Terry <michael.terry@canonical.com>
Thu, 28 Jul 2011 20:38:10 +0000 (16:38 -0400)
src/display.c
src/process.c
src/process.h

index 4adc017beefe2d452d0fb81dd93c98173f4408c0..0cfa726033c79d2b35bb979b9ecbb27d904677bf 100644 (file)
@@ -584,7 +584,7 @@ static Session *
 create_session (Display *display, PAMSession *pam_session, const gchar *session_name, gboolean is_greeter, const gchar *log_filename)
 {
     User *user;
-    gchar *sessions_dir, *filename, *path, *command = NULL;
+    gchar *sessions_dir, *filename, *path, *orig_path, *command = NULL;
     GKeyFile *session_desktop_file;
     Session *session;
     gchar *cookie;
@@ -652,6 +652,13 @@ create_session (Display *display, PAMSession *pam_session, const gchar *session_
 
     set_env_from_pam_session (session, pam_session);
 
+    /* Insert our own utility directory to PATH */
+    orig_path = process_get_env (PROCESS (session), "PATH");
+    path = g_strdup_printf ("%s:%s", PKGLIBEXEC_DIR, orig_path);
+    process_set_env (PROCESS (session), "PATH", path);
+    g_free (path);
+    g_free (orig_path);
+
     process_set_log_file (PROCESS (session), log_filename);
 
     /* Open ConsoleKit session */
index 286f73232cd763a884b8139a78b8142f84d698a7..babb0b194bb49a36044fc61bcddde2cc245c5a01 100644 (file)
@@ -97,6 +97,13 @@ process_set_env (Process *process, const gchar *name, const gchar *value)
     g_hash_table_insert (process->priv->env, g_strdup (name), g_strdup (value));
 }
 
+gchar *
+process_get_env (Process *process, const gchar *name)
+{
+    g_return_if_fail (process != NULL);
+    return g_strdup (g_hash_table_lookup (process->priv->env, name));
+}
+
 static void
 process_watch_cb (GPid pid, gint status, gpointer data)
 {
index 4e739d60aea4f897000f06798547aea3b832c896..eac071eea1ff7ee9447c0c0ea255970569522e1c 100644 (file)
@@ -53,6 +53,8 @@ const gchar *process_get_log_file (Process *process);
 
 void process_set_env (Process *process, const gchar *name, const gchar *value);
 
+gchar *process_get_env (Process *process, const gchar *name);
+
 gboolean process_start (Process *process,
                               User *user,
                               const gchar *working_dir,