[glib/glib-2-60: 1/2] gapplication: remove inactivity_timeout source on finalize
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-60: 1/2] gapplication: remove inactivity_timeout source on finalize
- Date: Mon, 2 Sep 2019 13:22:45 +0000 (UTC)
commit c5e3150443d4fe4b72b41b630da4ba0b7340ed3c
Author: Ting-Wei Lan <lantw src gnome org>
Date: Sat Jul 27 15:28:23 2019 +0800
gapplication: remove inactivity_timeout source on finalize
The event source used to handle inactivity_timeout doesn't hold a
reference on the application. Therefore, it is possible for callback
function of the event source to run after the application has been
freed, leading to use-after-free problem. To avoid the problem, we
should remove the event source before the application is freed.
This should fix SIGBUS crash of gio/tests/gapplication on FreeBSD.
https://gitlab.gnome.org/GNOME/glib/issues/1846#note_566550
gio/gapplication.c | 3 +++
1 file changed, 3 insertions(+)
---
diff --git a/gio/gapplication.c b/gio/gapplication.c
index 2d2ab48e3..321b34f54 100644
--- a/gio/gapplication.c
+++ b/gio/gapplication.c
@@ -1372,6 +1372,9 @@ g_application_finalize (GObject *object)
{
GApplication *application = G_APPLICATION (object);
+ if (application->priv->inactivity_timeout_id)
+ g_source_remove (application->priv->inactivity_timeout_id);
+
g_slist_free_full (application->priv->option_groups, (GDestroyNotify) g_option_group_unref);
if (application->priv->main_options)
g_option_group_unref (application->priv->main_options);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]