summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2013-05-28 13:01:31 -0400
committerRay Strode <rstrode@redhat.com>2013-05-28 13:06:42 -0400
commit52b43e5ed80fb6f6d13d738d768b020c6276c298 (patch)
tree3653c039360cfcdec278a89067f71f1bbda70b20
parent8d6463dc173d85035166770efcd3d547d83476ba (diff)
downloadgdm-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.c20
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;
}