[gtk/fix-network-places] placesview: Avoid use-after-free
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/fix-network-places] placesview: Avoid use-after-free
- Date: Thu, 11 Feb 2021 18:04:49 +0000 (UTC)
commit 95d48ac2e81df1f382669e4795cc3a9de151a252
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Feb 11 09:14:34 2021 -0500
placesview: Avoid use-after-free
The places view has questionable code for handling
'destroy', which seems to trigger use-after-free in
some cases. Clean this up a bit by acknowledging the
cancellation fully, rather than relying on the
destroyed flag.
gtk/gtkplacesview.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c
index aec0ddea60..4d26337155 100644
--- a/gtk/gtkplacesview.c
+++ b/gtk/gtkplacesview.c
@@ -986,9 +986,14 @@ network_enumeration_next_files_finished (GObject *source_object,
if (error)
{
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- g_warning ("Failed to fetch network locations: %s", error->message);
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_clear_error (&error);
+ g_object_unref (view);
+ return;
+ }
+ g_warning ("Failed to fetch network locations: %s", error->message);
g_clear_error (&error);
}
else
@@ -999,16 +1004,11 @@ network_enumeration_next_files_finished (GObject *source_object,
g_list_free_full (detected_networks, g_object_unref);
}
- g_object_unref (view);
+ update_network_state (view);
+ monitor_network (view);
+ update_loading (view);
- /* avoid to update widgets if we are already destroyed
- (and got cancelled s a result of that) */
- if (!view->destroyed)
- {
- update_network_state (view);
- monitor_network (view);
- update_loading (view);
- }
+ g_object_unref (view);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]