[gtk+/gtk-3-0] bgo#514843 - [filechooser] Deal with corrupted .gtk-bookmarks gracefully



commit b368f50e05c54a47f5bf86ee18fae8cfd4450c09
Author: John Ralls <jralls ceridwen us>
Date:   Mon Sep 12 14:25:45 2011 -0500

    bgo#514843 - [filechooser] Deal with corrupted .gtk-bookmarks gracefully
    
    We weren't checking for the lines in that file being valid UTF-8 strings.

 gtk/gtkfilesystem.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c
index f3d8e82..e55f83b 100644
--- a/gtk/gtkfilesystem.c
+++ b/gtk/gtkfilesystem.c
@@ -264,6 +264,9 @@ read_bookmarks (GFile *file)
       if (!*lines[i])
 	continue;
 
+      if (!g_utf8_validate (lines[i], -1, NULL))
+	continue;
+
       bookmark = g_slice_new0 (GtkFileSystemBookmark);
 
       if ((space = strchr (lines[i], ' ')) != NULL)
@@ -289,23 +292,25 @@ save_bookmarks (GFile  *bookmarks_file,
 {
   GError *error = NULL;
   GString *contents;
+  GSList *l;
 
   contents = g_string_new ("");
 
-  while (bookmarks)
+  for (l = bookmarks; l; l = l->next)
     {
-      GtkFileSystemBookmark *bookmark;
+      GtkFileSystemBookmark *bookmark = l->data;
       gchar *uri;
 
-      bookmark = bookmarks->data;
       uri = g_file_get_uri (bookmark->file);
+      if (!uri)
+	continue;
+
       g_string_append (contents, uri);
 
       if (bookmark->label)
 	g_string_append_printf (contents, " %s", bookmark->label);
 
       g_string_append_c (contents, '\n');
-      bookmarks = bookmarks->next;
       g_free (uri);
     }
 



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