Return an error if the uri is bad. (#391370, Maciej Piechotka)
authorMatthias Clasen <mclasen@redhat.com>
Tue, 2 Jan 2007 13:53:15 +0000 (13:53 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 2 Jan 2007 13:53:15 +0000 (13:53 +0000)
2007-01-02  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbookmarkfile.c (g_bookmark_file_get_app_info):
        Return an error if the uri is bad. (#391370, Maciej Piechotka)

svn path=/trunk/; revision=5192

ChangeLog
glib/gbookmarkfile.c

index 32c856b60be03fd8199129dc4dbec882c103003e..682c2710647b97f124df5b1c7df20a9e9a646641 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-02  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gbookmarkfile.c (g_bookmark_file_get_app_info): 
+       Return an error if the uri is bad. (#391370, Maciej Piechotka)
+
 2007-01-02  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/glib.symbols: Guard g_slice_debug_tree_statistics
index 914da012dd3d23070e6bf2ff9aec1764f35b710d..ee67699943b152cdfa4c684ce4266a2425d0d5f0 100644 (file)
@@ -3306,8 +3306,16 @@ expand_exec_line (const gchar *exec_fmt,
        case 'f':
          {
           gchar *file = g_filename_from_uri (uri, NULL, NULL);
-          g_string_append (exec, file);
-          g_free (file);
+           if (file)
+             {
+              g_string_append (exec, file);
+              g_free (file);
+             }
+           else
+             {
+               g_string_free (exec, TRUE);
+               return NULL;
+             }
          }
          break;
        case '%':
@@ -3385,8 +3393,18 @@ g_bookmark_file_get_app_info (GBookmarkFile  *bookmark,
     }
   
   if (exec)
-    *exec = expand_exec_line (ai->exec, uri);
-  
+    {
+      *exec = expand_exec_line (ai->exec, uri);
+      if (!*exec)
+        {
+          g_set_error (error, G_BOOKMARK_FILE_ERROR,
+                      G_BOOKMARK_FILE_ERROR_INVALID_URI,
+                      _("Failed to expand exec line '%s' with URI '%s'"),
+                    ai->exec, uri);
+          return FALSE;
+        }
+    } 
+
   if (count)
     *count = ai->count;