aboutsummaryrefslogtreecommitdiffstats
path: root/testing/gnome-settings-daemon/housekeeping-fix-improper-notify_notification_close_usage.patch
blob: 0bd07fdf8b41fa1960a564096f2446a019a60585 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;
 }