diff options
author | Ray Strode <rstrode@redhat.com> | 2013-05-28 13:01:31 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2013-05-28 13:06:42 -0400 |
commit | 52b43e5ed80fb6f6d13d738d768b020c6276c298 (patch) | |
tree | 3653c039360cfcdec278a89067f71f1bbda70b20 | |
parent | 8d6463dc173d85035166770efcd3d547d83476ba (diff) | |
download | gdm-52b43e5ed80fb6f6d13d738d768b020c6276c298.tar.gz |
daemon: Don't run initial-setup if initial-setup is not installed
Right now, we always assume gnome-initial-setup is installed and
there to use to create the initial user if necessary.
This isn't always true, and our failure mode is to crash.
This commit makes us more resiliant to a missing gnome-initial-setup.
https://bugzilla.gnome.org/show_bug.cgi?id=695081
-rw-r--r-- | daemon/gdm-simple-slave.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c index c7e4468e..74c4d513 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -65,6 +65,7 @@ #define DEFAULT_PING_INTERVAL 15 #define INITIAL_SETUP_USERNAME "gnome-initial-setup" +#define GNOME_SESSION_SESSIONS_PATH DATADIR "/gnome-session/sessions" struct GdmSimpleSlavePrivate { @@ -998,6 +999,20 @@ setup_server (GdmSimpleSlave *slave) #endif } +static gboolean +can_create_environment (const char *session_id) +{ + char *path; + gboolean session_exists; + + path = g_strdup_printf (GNOME_SESSION_SESSIONS_PATH "/%s.desktop", session_id); + session_exists = g_file_test (path, G_FILE_TEST_EXISTS); + + g_free (path); + + return session_exists; +} + static GdmLaunchEnvironment * create_environment (const char *session_id, const char *user_name, @@ -1179,6 +1194,11 @@ wants_initial_setup (GdmSimpleSlave *slave) return FALSE; } + /* don't run if initial-setup is unavailable */ + if (!can_create_environment ("gnome-initial-setup")) { + return FALSE; + } + if (!gdm_settings_direct_get_boolean (GDM_KEY_INITIAL_SETUP_ENABLE, &enabled)) { return FALSE; } |