From 213c20142c9092bcb2de0e69a378de5792dc86a6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 19 Jan 2016 14:30:12 +0100 Subject: [PATCH] wifi/supplicant: take object reference during availability_changed() If the list is expected to be modified, it also means that possibly instances will be unrefed. Probably, not yet visited instances will not be unrefed so there is no real problem. Just be extra cautious and take a reference to all instances first. (cherry picked from commit 004edecc81f253238ef64a730e6ff0805863c359) --- src/supplicant-manager/nm-supplicant-manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/supplicant-manager/nm-supplicant-manager.c b/src/supplicant-manager/nm-supplicant-manager.c index e31e726a25..c46b1974c3 100644 --- a/src/supplicant-manager/nm-supplicant-manager.c +++ b/src/supplicant-manager/nm-supplicant-manager.c @@ -200,9 +200,11 @@ availability_changed (NMSupplicantManager *self, gboolean available) /* priv->ifaces may be modified if availability changes; can't use GHashTableIter */ ifaces = g_hash_table_get_values (priv->ifaces); + for (iter = ifaces; iter; iter = iter->next) + g_object_ref (iter->data); for (iter = ifaces; iter; iter = iter->next) nm_supplicant_interface_set_supplicant_available (NM_SUPPLICANT_INTERFACE (iter->data), available); - g_list_free (ifaces); + g_list_free_full (ifaces, g_object_unref); } static gboolean