]> spindle.queued.net Git - midori/commitdiff
Always NULL-check database before using it
authorPaweł Forysiuk <tuxator@o2.pl>
Sat, 30 Jul 2011 18:11:45 +0000 (20:11 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sat, 30 Jul 2011 18:11:45 +0000 (20:11 +0200)
If the database is broken in whatever way the pointer is
unset. A good next step would be to give more user-friendly
feedback than the current rough dialog.

midori/main.c
midori/midori-browser.c
midori/midori-locationaction.c
panels/midori-bookmarks.c
panels/midori-history.c

index e49181dffb0bd0ebb4e626551c5bed11572cf12f..036a2ba838d7ca338ba4b1e5e72393cb997042d0 100644 (file)
@@ -426,13 +426,11 @@ midori_history_initialize (KatzeArray*  array,
                            char**       errmsg)
 {
     sqlite3* db;
-    gboolean has_day;
+    gboolean has_day = FALSE;
     sqlite3_stmt* stmt;
     gint result;
     gchar* sql;
 
-    has_day = FALSE;
-
     if (sqlite3_open (filename, &db) != SQLITE_OK)
     {
         if (errmsg)
@@ -2348,7 +2346,7 @@ main (int    argc,
     {
         g_string_append_printf (error_messages,
             _("Bookmarks couldn't be loaded: %s\n"), errmsg);
-        g_free (errmsg);
+        errmsg = NULL;
     }
     else if (!bookmarks_exist)
     {
@@ -2409,7 +2407,7 @@ main (int    argc,
     {
         g_string_append_printf (error_messages,
             _("The history couldn't be loaded: %s\n"), errmsg);
-        g_free (errmsg);
+        errmsg = NULL;
     }
     g_free (bookmarks_file);
     midori_startup_timer ("History read: \t%f");
index c42492b61ef2b4db72e70bacc89de37a20529679..108f14cd05d082c60569ad4c20bfac09d3610efc 100644 (file)
@@ -714,6 +714,9 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
 
     db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
 
+    if (!db)
+        return FALSE;
+
     if (is_folder)
         title = new_bookmark ? _("New folder") : _("Edit folder");
     else
index 968af2f8aa142b67fda8673123fee85add2219d4..e7225cef8ab58dbf9b7ef38ef34b57d6643fce83 100644 (file)
@@ -364,6 +364,10 @@ midori_location_action_popup_timeout_cb (gpointer data)
     {
         sqlite3* db;
         db = g_object_get_data (G_OBJECT (action->history), "db");
+
+        if (!db)
+            return FALSE;
+
         sqlcmd = "SELECT type, uri, title FROM ("
                  "  SELECT 1 AS type, uri, title, count() AS ct FROM history "
                  "      WHERE uri LIKE ?1 OR title LIKE ?1 GROUP BY uri "
index 680fef64566dc64ba8adf9d2f6ea4166ad13c0cb..90cf1244dc9e63062f476dbecf6a8264e2a9cc97 100644 (file)
@@ -133,6 +133,9 @@ midori_bookmarks_export_array_db (sqlite3*     db,
     KatzeItem* item;
     GList* list;
 
+    if (!db)
+        return;
+
     sqlcmd = g_strdup_printf ("SELECT * FROM bookmarks where folder='%s'", folder);
     root_array = katze_array_from_sqlite (db, sqlcmd);
     g_free (sqlcmd);
@@ -160,6 +163,9 @@ midori_bookmarks_import_array_db (sqlite3*     db,
     GList* list;
     KatzeItem* item;
 
+    if (!db)
+        return;
+
     KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
     {
         if (KATZE_IS_ARRAY (item))
@@ -181,6 +187,9 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
 
     db = g_object_get_data (G_OBJECT (bookmarks->array), "db");
 
+    if (!db)
+        return katze_array_new (KATZE_TYPE_ITEM);
+
     if (keyword && *keyword)
     {
         gchar* filterstr;
@@ -202,7 +211,7 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
     }
 
     if (result != SQLITE_OK)
-        return NULL;
+        return katze_array_new (KATZE_TYPE_ITEM);
 
     return katze_array_from_statement (statement);
 }
@@ -248,6 +257,9 @@ midori_bookmarks_insert_item_db (sqlite3*     db,
     /* Bookmarks must have a name, import may produce invalid items */
     g_return_if_fail (katze_item_get_name (item));
 
+    if (!db)
+        return;
+
     if (KATZE_ITEM_IS_BOOKMARK (item))
         uri = g_strdup (katze_item_get_uri (item));
     else
index d575e6e8b97cccb50e93db722f4d723e277bd0f3..975b410e423de7c108bfc567ef6c6060aec1ccac 100644 (file)
@@ -174,6 +174,9 @@ midori_history_remove_item_from_db (MidoriHistory* history,
 
     db = g_object_get_data (G_OBJECT (history->array), "db");
 
+    if (!db)
+        return;
+
     if (KATZE_ITEM_IS_BOOKMARK (item))
         sqlcmd = sqlite3_mprintf (
             "DELETE FROM history WHERE uri = '%q' AND"
@@ -217,6 +220,9 @@ midori_history_read_from_db (MidoriHistory* history,
 
     db = g_object_get_data (G_OBJECT (history->array), "db");
 
+    if (!db)
+        return katze_array_new (KATZE_TYPE_ITEM);
+
     if (filter && *filter)
     {
         gchar* filterstr;
@@ -249,7 +255,7 @@ midori_history_read_from_db (MidoriHistory* history,
     }
 
     if (result != SQLITE_OK)
-        return NULL;
+        return katze_array_new (KATZE_TYPE_ITEM);
 
     return katze_array_from_statement (statement);
 }
@@ -327,7 +333,7 @@ midori_history_bookmark_add_cb (GtkWidget*     menuitem,
 {
     GtkTreeModel* model;
     GtkTreeIter iter;
-    KatzeItem* item;
+    KatzeItem* item = NULL;
 
     MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (history));
     if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (history->treeview),
@@ -335,11 +341,12 @@ midori_history_bookmark_add_cb (GtkWidget*     menuitem,
         gtk_tree_model_get (model, &iter, 0, &item, -1);
 
     if (KATZE_IS_ITEM (item) && katze_item_get_uri (item))
+    {
         midori_browser_edit_bookmark_dialog_new (browser, item, TRUE, FALSE);
+        g_object_unref (item);
+    }
     else
         midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE);
-
-    g_object_unref (item);
 }
 
 static GtkWidget*
@@ -674,6 +681,10 @@ midori_history_open_in_tab_activate_cb (GtkWidget*     menuitem,
         KatzeArray* array;
 
         db = g_object_get_data (G_OBJECT (history->array), "db");
+
+        if (!db)
+            return;
+
         sqlcmd = g_strdup_printf ("SELECT uri, title, date, day "
                  "FROM history WHERE day = %d "
                  "GROUP BY uri ORDER BY date ASC",