[gdm] daemon: Don't run initial-setup if initial-setup is not installed



commit 52b43e5ed80fb6f6d13d738d768b020c6276c298
Author: Ray Strode <rstrode redhat com>
Date:   Tue May 28 13:01:31 2013 -0400

    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

 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 c7e4468..74c4d51 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;
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]