diff options
author | Mayank Sharma <mayank8019@gmail.com> | 2019-07-23 09:51:41 +0530 |
---|---|---|
committer | Mayank Sharma <mayank8019@gmail.com> | 2019-07-24 12:25:21 +0530 |
commit | 63d97b19af2479fa2219ca87201f9e830b5f31f3 (patch) | |
tree | 9a76671ef76c8ab966e2560d01c26e6864f68a5a | |
parent | 2a585dba92774c0edd1bbec2477524ebd7ad2b61 (diff) | |
download | gvfs-63d97b19af2479fa2219ca87201f9e830b5f31f3.tar.gz |
google: Fix crashes when deleting if the file isn't found
Currently in delete operation, if the entry gets resolved but parent
resolution fails, the jump to `out` label (while handling error) will
cause the existing entry's ref_count to decrease by 1 (since `out`
label calls g_object_unref on entry).
We fix the issue by removing g_object_unref from `out` label and
suitably unreffing the entry.
-rw-r--r-- | daemon/gvfsbackendgoogle.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/daemon/gvfsbackendgoogle.c b/daemon/gvfsbackendgoogle.c index 652b230f..dcbdc713 100644 --- a/daemon/gvfsbackendgoogle.c +++ b/daemon/gvfsbackendgoogle.c @@ -1392,6 +1392,7 @@ g_vfs_backend_google_delete (GVfsBackend *_self, sanitize_error (&error); g_vfs_job_failed_from_error (G_VFS_JOB (job), error); g_error_free (error); + g_object_unref (entry); goto out; } @@ -1403,9 +1404,9 @@ g_vfs_backend_google_delete (GVfsBackend *_self, insert_entry (self, GDATA_ENTRY (new_entry)); g_hash_table_foreach (self->monitors, emit_delete_event, entry_path); g_vfs_job_succeeded (G_VFS_JOB (job)); + g_object_unref (entry); out: - g_object_unref (entry); g_clear_object (&new_entry); g_free (entry_path); g_debug ("- delete\n"); |