Blame SOURCES/0001-network-Prevent-a-use-after-free-crash-when-removing.patch

34cf59
From 51988f5a41f10696cee74d6f9ff5f92d14baa60b Mon Sep 17 00:00:00 2001
34cf59
From: Rui Matos <tiagomatos@gmail.com>
34cf59
Date: Wed, 27 May 2015 16:45:03 +0200
34cf59
Subject: [PATCH] network: Prevent a use after free crash when removing virtual
34cf59
 devices
34cf59
34cf59
When a virtual device is removed and the instance gets finalized we're
34cf59
not disconnecting from the real NMDevice's notify signal and thus end
34cf59
up crashing when the signal fires afterwards.
34cf59
34cf59
Avoid that by using g_signal_connect_object() so that when we're
34cf59
finalized the disconnection happens automatically.
34cf59
34cf59
https://bugzilla.gnome.org/show_bug.cgi?id=749972
34cf59
---
34cf59
 panels/network/net-device-bond.c   | 4 ++--
34cf59
 panels/network/net-device-bridge.c | 4 ++--
34cf59
 panels/network/net-device-team.c   | 4 ++--
34cf59
 3 files changed, 6 insertions(+), 6 deletions(-)
34cf59
34cf59
diff --git a/panels/network/net-device-bond.c b/panels/network/net-device-bond.c
34cf59
index abf0829..67123ff 100644
34cf59
--- a/panels/network/net-device-bond.c
34cf59
+++ b/panels/network/net-device-bond.c
34cf59
@@ -133,8 +133,8 @@ net_device_bond_device_set (NetVirtualDevice *virtual_device,
34cf59
 {
34cf59
         NetDeviceBond *device_bond = NET_DEVICE_BOND (virtual_device);
34cf59
 
34cf59
-        g_signal_connect (nm_device, "notify::slaves",
34cf59
-                          G_CALLBACK (nm_device_slaves_changed), device_bond);
34cf59
+        g_signal_connect_object (nm_device, "notify::slaves",
34cf59
+                                 G_CALLBACK (nm_device_slaves_changed), device_bond, 0);
34cf59
         nm_device_slaves_changed (G_OBJECT (nm_device), NULL, device_bond);
34cf59
 }
34cf59
 
34cf59
diff --git a/panels/network/net-device-bridge.c b/panels/network/net-device-bridge.c
34cf59
index 16251e0..2335ff8 100644
34cf59
--- a/panels/network/net-device-bridge.c
34cf59
+++ b/panels/network/net-device-bridge.c
34cf59
@@ -133,8 +133,8 @@ net_device_bridge_device_set (NetVirtualDevice *virtual_device,
34cf59
 {
34cf59
         NetDeviceBridge *device_bridge = NET_DEVICE_BRIDGE (virtual_device);
34cf59
 
34cf59
-        g_signal_connect (nm_device, "notify::slaves",
34cf59
-                          G_CALLBACK (nm_device_slaves_changed), device_bridge);
34cf59
+        g_signal_connect_object (nm_device, "notify::slaves",
34cf59
+                                 G_CALLBACK (nm_device_slaves_changed), device_bridge, 0);
34cf59
         nm_device_slaves_changed (G_OBJECT (nm_device), NULL, device_bridge);
34cf59
 }
34cf59
 
34cf59
diff --git a/panels/network/net-device-team.c b/panels/network/net-device-team.c
34cf59
index 09a6142..55bfbca 100644
34cf59
--- a/panels/network/net-device-team.c
34cf59
+++ b/panels/network/net-device-team.c
34cf59
@@ -133,8 +133,8 @@ net_device_team_device_set (NetVirtualDevice *virtual_device,
34cf59
 {
34cf59
         NetDeviceTeam *device_team = NET_DEVICE_TEAM (virtual_device);
34cf59
 
34cf59
-        g_signal_connect (nm_device, "notify::slaves",
34cf59
-                          G_CALLBACK (nm_device_slaves_changed), device_team);
34cf59
+        g_signal_connect_object (nm_device, "notify::slaves",
34cf59
+                                 G_CALLBACK (nm_device_slaves_changed), device_team, 0);
34cf59
         nm_device_slaves_changed (G_OBJECT (nm_device), NULL, device_team);
34cf59
 }
34cf59
 
34cf59
-- 
34cf59
2.4.0
34cf59