[gvfs] google: Fix crashes when deleting if the file isn't found



commit 63d97b19af2479fa2219ca87201f9e830b5f31f3
Author: Mayank Sharma <mayank8019 gmail com>
Date:   Tue Jul 23 09:51:41 2019 +0530

    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.

 daemon/gvfsbackendgoogle.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
---
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");


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