aboutsummaryrefslogtreecommitdiffstats
path: root/testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch')
-rw-r--r--testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch b/testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch
new file mode 100644
index 0000000000..0bd07fdf8b
--- /dev/null
+++ b/testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch
@@ -0,0 +1,30 @@
+From 3110457f72f70b2d283c1ad2f27b91b95d75d92f Mon Sep 17 00:00:00 2001
+From: Christian Hergert <chergert@redhat.com>
+Date: Wed, 18 Jul 2018 19:31:17 -0700
+Subject: [PATCH] housekeeping: fix improper notify_notification_close() usage
+
+notify_notification_close() expects that a parameter will be available for
+the error location, which could be a dangling pointer in a register or
+on the stack in the case of some architectures.
+
+This was caught by GNOME/glib#1425 which allows us to check proper type
+parameters.
+---
+ plugins/housekeeping/gsd-disk-space.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c
+index 0ae40193aa..0eee94ea9b 100644
+--- a/plugins/housekeeping/gsd-disk-space.c
++++ b/plugins/housekeeping/gsd-disk-space.c
+@@ -1017,7 +1017,9 @@ gsd_ldsm_clean (void)
+ g_clear_object (&ldsm_monitor);
+ g_clear_object (&settings);
+ g_clear_object (&privacy_settings);
+- g_clear_pointer (&notification, notify_notification_close);
++ /* NotifyNotification::closed callback will drop reference */
++ if (notification != NULL)
++ notify_notification_close (notification, NULL);
+ g_slist_free_full (ignore_paths, g_free);
+ ignore_paths = NULL;
+ }