[gnome-initial-setup] Consolidate error code path, fix potential stack smash



commit dd3f50ecc72a696d468f4e436c2e619c097bbe0f
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu May 31 16:40:21 2012 -0400

    Consolidate error code path, fix potential stack smash

 gnome-initial-setup/gdm-initial-setup.c |   35 ++++++++++++++----------------
 1 files changed, 16 insertions(+), 19 deletions(-)
---
diff --git a/gnome-initial-setup/gdm-initial-setup.c b/gnome-initial-setup/gdm-initial-setup.c
index 0278beb..69a3532 100644
--- a/gnome-initial-setup/gdm-initial-setup.c
+++ b/gnome-initial-setup/gdm-initial-setup.c
@@ -154,33 +154,31 @@ build_eula_text_view (GFile *eula,
         GtkTextBuffer *buffer;
 
         input_stream = G_INPUT_STREAM (g_file_read (eula, NULL, &error));
-        if (error != NULL) {
-                g_printerr (error->message);
+        if (error != NULL)
                 goto out;
-        }
 
         data_input_stream = g_data_input_stream_new (input_stream);
         g_object_unref (input_stream);
 
         *title_out = g_data_input_stream_read_line (data_input_stream,
                                                     NULL, NULL, &error);
-        if (error != NULL) {
-                g_printerr (error->message);
+        if (error != NULL)
                 goto out;
-        }
 
         buffer = gtk_text_buffer_new (NULL);
         splice_buffer (G_INPUT_STREAM (data_input_stream), buffer, &error);
-        if (error != NULL) {
-                g_printerr (error->message);
+        if (error != NULL)
                 goto out;
-        }
 
         widget = gtk_text_view_new_with_buffer (buffer);
 
  out:
+        if (error != NULL) {
+                g_printerr ("Error while reading EULA: %s", error->message);
+                g_error_free (error);
+        }
+
         g_clear_object (&data_input_stream);
-        g_clear_error (&error);
         return widget;
 }
 
@@ -231,9 +229,8 @@ prepare_eula_pages (SetupData *setup)
         eulas_dir = g_file_new_for_path (eulas_dir_path);
         g_free (eulas_dir_path);
 
-        if (!g_file_query_exists (eulas_dir, NULL)) {
+        if (!g_file_query_exists (eulas_dir, NULL))
                 goto out;
-        }
 
         enumerator = g_file_enumerate_children (eulas_dir,
                                                 G_FILE_ATTRIBUTE_STANDARD_NAME,
@@ -241,23 +238,23 @@ prepare_eula_pages (SetupData *setup)
                                                 NULL,
                                                 &error);
 
-        if (error != NULL) {
-                g_printerr (error->message);
+        if (error != NULL)
                 goto out;
-        }
 
         while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) {
                 GFile *eula = g_file_get_child (eulas_dir, g_file_info_get_name (info));
                 build_eula_page (setup, eula);
         }
 
-        if (error != NULL) {
-                g_printerr (error->message);
+        if (error != NULL)
                 goto out;
-        }
 
  out:
-        g_clear_error (&error);
+        if (error != NULL) {
+                g_printerr ("Error while parsing eulas: %s", error->message);
+                g_error_free (error);
+        }
+
         g_object_unref (eulas_dir);
         g_clear_object (&enumerator);
 }



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