Blame SOURCES/0001-gio-fix-race-condition-in-GDBusObjectManagerClient.patch

fd368b
From aeecd81dd13e4d8ef609149f82770ad06a8fccdb Mon Sep 17 00:00:00 2001
fd368b
From: Beniamino Galvani <bgalvani@redhat.com>
fd368b
Date: Sat, 30 Sep 2017 11:26:29 +0200
fd368b
Subject: [PATCH] gio: fix race condition in GDBusObjectManagerClient
fd368b
fd368b
priv->map_object_path_to_object_proxy must be protected to avoid
fd368b
concurrent access by multiple threads. Move the hash table insertion
fd368b
into the critical section.
fd368b
fd368b
https://bugzilla.gnome.org/show_bug.cgi?id=788368
fd368b
---
fd368b
 gio/gdbusobjectmanagerclient.c | 15 +++++++++------
fd368b
 1 file changed, 9 insertions(+), 6 deletions(-)
fd368b
fd368b
diff --git a/gio/gdbusobjectmanagerclient.c b/gio/gdbusobjectmanagerclient.c
fd368b
index 1c00797cd165..08c94d5068ef 100644
fd368b
--- a/gio/gdbusobjectmanagerclient.c
fd368b
+++ b/gio/gdbusobjectmanagerclient.c
fd368b
@@ -1542,6 +1542,13 @@ add_interfaces (GDBusObjectManagerClient *manager,
fd368b
       g_variant_unref (properties);
fd368b
     }
fd368b
 
fd368b
+  if (added)
fd368b
+    {
fd368b
+      g_hash_table_insert (manager->priv->map_object_path_to_object_proxy,
fd368b
+                           g_strdup (object_path),
fd368b
+                           op);
fd368b
+    }
fd368b
+
fd368b
   g_mutex_unlock (&manager->priv->lock);
fd368b
 
fd368b
   /* now that we don't hold the lock any more, emit signals */
fd368b
@@ -1555,12 +1562,8 @@ add_interfaces (GDBusObjectManagerClient *manager,
fd368b
   g_list_free (interface_added_signals);
fd368b
 
fd368b
   if (added)
fd368b
-    {
fd368b
-      g_hash_table_insert (manager->priv->map_object_path_to_object_proxy,
fd368b
-                           g_strdup (object_path),
fd368b
-                           op);
fd368b
-      g_signal_emit_by_name (manager, "object-added", op);
fd368b
-    }
fd368b
+    g_signal_emit_by_name (manager, "object-added", op);
fd368b
+
fd368b
   g_object_unref (manager);
fd368b
   g_object_unref (op);
fd368b
 }
fd368b
-- 
fd368b
2.14.2
fd368b