diff options
author | Ray Strode <rstrode@redhat.com> | 2014-04-22 15:00:44 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2014-04-22 15:00:44 -0400 |
commit | c9bebed00008724600aef6c401f21245f7678e45 (patch) | |
tree | 06c324f41fb3776a0eb45f07040136988bb74125 | |
parent | 76d26d8c1c37c6bd38bcac082d5cc62670fe5d39 (diff) | |
download | gdm-c9bebed00008724600aef6c401f21245f7678e45.tar.gz |
Revert "worker: get PATH from parent instead of #define"
This reverts commit e546e4dc6649a4fdf9065322420a28fa7e666782.
It's causing problems because bindir and sbindir are in the wrong
order for a user session.
-rw-r--r-- | common/Makefile.am | 1 | ||||
-rw-r--r-- | common/gdm-common.c | 2 | ||||
-rw-r--r-- | configure.ac | 17 | ||||
-rw-r--r-- | daemon/Makefile.am | 1 | ||||
-rw-r--r-- | daemon/gdm-session-worker.c | 15 |
5 files changed, 31 insertions, 5 deletions
diff --git a/common/Makefile.am b/common/Makefile.am index ece167b6..2e97090b 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -20,6 +20,7 @@ AM_CPPFLAGS = \ -DGDM_DEFAULTS_CONF=\"$(GDM_DEFAULTS_CONF)\" \ -DGDM_CUSTOM_CONF=\"$(GDM_CUSTOM_CONF)\" \ -DGDM_OLD_CONF=\"$(GDM_OLD_CONF)\" \ + -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \ $(COMMON_CFLAGS) \ $(NULL) diff --git a/common/gdm-common.c b/common/gdm-common.c index aeb873be..4017313b 100644 --- a/common/gdm-common.c +++ b/common/gdm-common.c @@ -909,7 +909,7 @@ gdm_get_script_environment (const char *username, /* Runs as root */ g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (display_x11_authority_file)); g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (display_name)); - g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH"))); + g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (GDM_SESSION_DEFAULT_PATH)); g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true")); g_hash_table_remove (hash, "MAIL"); diff --git a/configure.ac b/configure.ac index 242a969d..aa0a13fc 100644 --- a/configure.ac +++ b/configure.ac @@ -274,6 +274,23 @@ AC_ARG_WITH(at-spi-registryd-directory, AT_SPI_REGISTRYD_DIR=$with_at_spi_registryd_directory AC_SUBST(AT_SPI_REGISTRYD_DIR) +# Allow configuration of default PATH +# +withval="" +AC_ARG_WITH(default-path, + AS_HELP_STRING([--with-default-path=<PATH>], + [PATH GDM will use as the user's default PATH]), + [if test x$withval != x; then + AC_MSG_RESULT("PATH ${withval} will be the default PATH.") + fi]) + +if test x$withval != x; then + GDM_SESSION_DEFAULT_PATH="$withval" +else + GDM_SESSION_DEFAULT_PATH="/usr/local/bin:/usr/bin:/bin" +fi +AC_SUBST(GDM_SESSION_DEFAULT_PATH) + dnl dnl file that sets LANG dnl diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 6944baa9..691c9391 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -19,6 +19,7 @@ AM_CPPFLAGS = \ -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ + -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \ -DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \ $(DISABLE_DEPRECATED_CFLAGS) \ $(DAEMON_CFLAGS) \ diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index 5fc42c6b..8493fbd0 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -90,6 +90,10 @@ #define GDM_PASSWD_AUXILLARY_BUFFER_SIZE 1024 #endif +#ifndef GDM_SESSION_DEFAULT_PATH +#define GDM_SESSION_DEFAULT_PATH "/usr/local/bin:/usr/bin:/bin" +#endif + #ifndef GDM_SESSION_ROOT_UID #define GDM_SESSION_ROOT_UID 0 #endif @@ -1503,10 +1507,13 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker, /* Let's give the user a default PATH if he doesn't already have one */ if (!gdm_session_worker_environment_variable_is_set (worker, "PATH")) { - const char *path; - - path = g_getenv ("PATH"); - gdm_session_worker_set_environment_variable (worker, "PATH", path); + if (strcmp (BINDIR, "/usr/bin") == 0) { + gdm_session_worker_set_environment_variable (worker, "PATH", + GDM_SESSION_DEFAULT_PATH); + } else { + gdm_session_worker_set_environment_variable (worker, "PATH", + BINDIR ":" GDM_SESSION_DEFAULT_PATH); + } } if (! _change_user (worker, uid, gid)) { |