From 05e2dd440809840c88e07189d8b8fe66c917949b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 25 Aug 2008 13:27:36 +0000 Subject: Plug some leaks on error paths svn path=/trunk/; revision=1907 --- ChangeLog | 11 +++++++++++ common/gdbusutils.c | 1 + common/gmountoperationdbus.c | 2 ++ daemon/gvfsbackendgphoto2.c | 27 +++++++++++++++++++++++++-- daemon/gvfsbackendtrash.c | 2 +- daemon/gvfsjobsetattribute.c | 4 ---- 6 files changed, 40 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index c33c4978..4efda64c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-08-25 Matthias Clasen + + Bug 549253 – error path leaks + + * common/gmountoperationdbus.c: + * common/gdbusutils.c: + * daemon/gvfsbackendgphoto2.c: + * daemon/gvfsbackendtrash.c: + * daemon/gvfsjobsetattribute.c: Plug some leaks on + error paths. + 2008-08-25 Bastien Nocera * daemon/gvfsbackenddav.c (ms_response_to_file_info): diff --git a/common/gdbusutils.c b/common/gdbusutils.c index e55016dd..c4282452 100644 --- a/common/gdbusutils.c +++ b/common/gdbusutils.c @@ -1348,6 +1348,7 @@ _g_dbus_connection_call_async (DBusConnection *connection, g_set_error_literal (&data->io_error, G_IO_ERROR, G_IO_ERROR_FAILED, "Can't open dbus connection"); g_idle_add (async_call_error_at_idle, data); + dbus_error_free (&derror); return; } } diff --git a/common/gmountoperationdbus.c b/common/gmountoperationdbus.c index f3f5cf5f..1027b3a9 100644 --- a/common/gmountoperationdbus.c +++ b/common/gmountoperationdbus.c @@ -225,6 +225,7 @@ mount_op_ask_password (GMountOperationDBus *op_dbus, if (!dbus_connection_send (op_dbus->connection, reply, NULL)) _g_dbus_oom (); dbus_message_unref (reply); + dbus_error_free (&error); return; } @@ -297,6 +298,7 @@ mount_op_ask_question (GMountOperationDBus *op_dbus, if (!dbus_connection_send (op_dbus->connection, reply, NULL)) _g_dbus_oom (); dbus_message_unref (reply); + dbus_error_free (&error); return; } diff --git a/daemon/gvfsbackendgphoto2.c b/daemon/gvfsbackendgphoto2.c index 6e187332..f06605c1 100644 --- a/daemon/gvfsbackendgphoto2.c +++ b/daemon/gvfsbackendgphoto2.c @@ -1324,6 +1324,7 @@ ensure_ignore_prefix (GVfsBackendGphoto2 *gphoto2_backend, GVfsJob *job) { error = get_error_from_gphoto2 (_("Failed to get folder list"), rc); g_vfs_job_failed_from_error (job, error); + g_error_free (error); return FALSE; } @@ -1657,6 +1658,7 @@ do_unmount (GVfsBackend *backend, num_open_files), num_open_files); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); return; } @@ -1718,6 +1720,7 @@ do_open_for_read (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error creating file object"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); free_read_handle (read_handle); goto out; } @@ -1732,6 +1735,7 @@ do_open_for_read (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error getting file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); free_read_handle (read_handle); goto out; } @@ -1741,6 +1745,7 @@ do_open_for_read (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error getting data from file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); free_read_handle (read_handle); goto out; } @@ -1885,9 +1890,11 @@ do_query_info (GVfsBackend *backend, split_filename_with_ignore_prefix (gphoto2_backend, filename, &dir, &name); + error = NULL; if (!file_get_info (gphoto2_backend, dir, name, info, &error, FALSE)) { g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); } else { @@ -1909,7 +1916,6 @@ try_query_info (GVfsBackend *backend, GFileAttributeMatcher *matcher) { GVfsBackendGphoto2 *gphoto2_backend = G_VFS_BACKEND_GPHOTO2 (backend); - GError *error; char *dir; char *name; gboolean ret; @@ -1920,7 +1926,7 @@ try_query_info (GVfsBackend *backend, split_filename_with_ignore_prefix (gphoto2_backend, filename, &dir, &name); - if (!file_get_info (gphoto2_backend, dir, name, info, &error, TRUE)) + if (!file_get_info (gphoto2_backend, dir, name, info, NULL, TRUE)) { DEBUG (" BUU no info from cache for try_query_info (%s)", filename); goto out; @@ -2007,6 +2013,7 @@ do_enumerate (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Failed to get folder list"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); g_free (filename); return; } @@ -2025,9 +2032,11 @@ do_enumerate (GVfsBackend *backend, gp_list_get_name (list, n, &name); DEBUG (" enum folder '%s'", name); info = g_file_info_new (); + error = NULL; if (!file_get_info (gphoto2_backend, filename, name, info, &error, FALSE)) { g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); g_list_foreach (l, (GFunc) g_object_unref, NULL); g_list_free (l); gp_list_free (list); @@ -2070,6 +2079,7 @@ do_enumerate (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Failed to get file list"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); g_free (filename); return; } @@ -2089,9 +2099,11 @@ do_enumerate (GVfsBackend *backend, DEBUG (" enum file '%s'", name); info = g_file_info_new (); + error = NULL; if (!file_get_info (gphoto2_backend, filename, name, info, &error, FALSE)) { g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); g_list_foreach (l, (GFunc) g_object_unref, NULL); g_list_free (l); gp_list_free (list); @@ -2359,6 +2371,7 @@ do_make_directory (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error creating directory"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } @@ -2588,6 +2601,7 @@ do_set_display_name (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error renaming dir"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } caches_invalidate_file (gphoto2_backend, dir, name); @@ -2600,6 +2614,7 @@ do_set_display_name (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error renaming file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } caches_invalidate_file (gphoto2_backend, dir, name); @@ -2674,6 +2689,7 @@ do_delete (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error deleting directory"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } caches_invalidate_file (gphoto2_backend, dir, name); @@ -2699,6 +2715,7 @@ do_delete (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error deleting file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } @@ -2798,6 +2815,7 @@ do_create_internal (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Cannot allocate new file to append to"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); write_handle_free (handle); goto out; } @@ -2812,6 +2830,7 @@ do_create_internal (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Cannot read file to append to"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); write_handle_free (handle); gp_file_unref (file); goto out; @@ -2822,6 +2841,7 @@ do_create_internal (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Cannot get data of file to append to"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); write_handle_free (handle); gp_file_unref (file); goto out; @@ -3108,6 +3128,7 @@ do_close_write (GVfsBackend *backend, { error = get_error_from_gphoto2 (_("Error writing file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } @@ -3210,6 +3231,7 @@ do_move (GVfsBackend *backend, DEBUG (" error renaming dir"); error = get_error_from_gphoto2 (_("Error renaming dir"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } } @@ -3222,6 +3244,7 @@ do_move (GVfsBackend *backend, DEBUG (" error renaming file"); error = get_error_from_gphoto2 (_("Error renaming file"), rc); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); + g_error_free (error); goto out; } } diff --git a/daemon/gvfsbackendtrash.c b/daemon/gvfsbackendtrash.c index 8a70508e..5c854a36 100644 --- a/daemon/gvfsbackendtrash.c +++ b/daemon/gvfsbackendtrash.c @@ -561,7 +561,7 @@ list_trash_dirs (void) { dirs = g_list_prepend (dirs, home_trash); if (statbuf.st_nlink != 2) - has_trash_files = TRUE;; + has_trash_files = TRUE; } else g_free (home_trash); diff --git a/daemon/gvfsjobsetattribute.c b/daemon/gvfsjobsetattribute.c index 0b88d81f..3904a3f2 100644 --- a/daemon/gvfsjobsetattribute.c +++ b/daemon/gvfsjobsetattribute.c @@ -86,7 +86,6 @@ g_vfs_job_set_attribute_new (DBusConnection *connection, GVfsJobSetAttribute *job; DBusMessage *reply; DBusMessageIter iter, array_iter; - DBusError derror; const gchar *filename = NULL; gint filename_len; GFileQueryInfoFlags flags; @@ -95,8 +94,6 @@ g_vfs_job_set_attribute_new (DBusConnection *connection, GFileAttributeType type; GDbusAttributeValue value; - dbus_error_init (&derror); - dbus_message_iter_init (message, &iter); if (dbus_message_iter_get_arg_type (&iter) == DBUS_TYPE_ARRAY && @@ -121,7 +118,6 @@ g_vfs_job_set_attribute_new (DBusConnection *connection, reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, _("Invalid dbus message")); - dbus_error_free (&derror); dbus_connection_send (connection, reply, NULL); return NULL; -- cgit v1.2.1