aboutsummaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorGuido Falsi <madpilot@FreeBSD.org>2023-04-29 15:51:00 +0000
committerGuido Falsi <madpilot@FreeBSD.org>2023-04-29 15:51:00 +0000
commit4ce9f853281de004da253d761a4ef81a0b427e7f (patch)
tree1f11bef1f297402c3815dcc18b37d7d7d77b83bf /x11-wm
parent53fec2142f28f66aea0fe9b0edfb2d082b5ddbaa (diff)
downloadports-4ce9f853281de004da253d761a4ef81a0b427e7f.tar.gz
ports-4ce9f853281de004da253d761a4ef81a0b427e7f.zip
x11-wm/xfce4-panel: Import upstream commit to fix crash
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/xfce4-panel/Makefile1
-rw-r--r--x11-wm/xfce4-panel/files/patch-upstream-crash-fix50
2 files changed, 51 insertions, 0 deletions
diff --git a/x11-wm/xfce4-panel/Makefile b/x11-wm/xfce4-panel/Makefile
index f7b8c1a2aa52..797080a0eff5 100644
--- a/x11-wm/xfce4-panel/Makefile
+++ b/x11-wm/xfce4-panel/Makefile
@@ -1,5 +1,6 @@
PORTNAME= xfce4-panel
PORTVERSION= 4.18.3
+PORTREVISION= 1
CATEGORIES= x11-wm xfce
MASTER_SITES= XFCE
DIST_SUBDIR= xfce4
diff --git a/x11-wm/xfce4-panel/files/patch-upstream-crash-fix b/x11-wm/xfce4-panel/files/patch-upstream-crash-fix
new file mode 100644
index 000000000000..160b26daa431
--- /dev/null
+++ b/x11-wm/xfce4-panel/files/patch-upstream-crash-fix
@@ -0,0 +1,50 @@
+From 3bf948cc2618632aaaaabefae1b1be50d5a607c3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ga=C3=ABl=20Bonithon?= <gael@xfce.org>
+Date: Sun, 16 Apr 2023 17:55:54 +0200
+Subject: [PATCH] tasklist: Fix use-after-free on tasklist child
+
+This was running smoothly since 2010 but the update to GLib 2.76, which
+makes g_slice_free() a simple wrapper around g_free_sized(), revealed
+this bug.
+
+Fixes: #730
+(cherry picked from commit a5a289ede6c2175b97059ead5d63a59dbde04ea0)
+---
+ plugins/tasklist/tasklist-widget.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c
+index 24dfdb7db..c0095d70d 100644
+--- plugins/tasklist/tasklist-widget.c
++++ plugins/tasklist/tasklist-widget.c
+@@ -1501,6 +1501,15 @@ xfce_tasklist_scroll_event (GtkWidget *widget,
+
+
+
++static gboolean
++xfce_tasklist_free_child (gpointer data)
++{
++ g_slice_free (XfceTasklistChild, data);
++ return FALSE;
++}
++
++
++
+ static void
+ xfce_tasklist_remove (GtkContainer *container,
+ GtkWidget *widget)
+@@ -1528,7 +1537,10 @@ xfce_tasklist_remove (GtkContainer *container,
+ if (child->pixbuf != NULL)
+ g_object_unref (child->pixbuf);
+
+- g_slice_free (XfceTasklistChild, child);
++ /* allow time for signal handlers connected to the destroy/dispose signals of
++ * child members to run, they could refer to these members via child, e.g.
++ * child->button as above to test for equality */
++ g_idle_add (xfce_tasklist_free_child, child);
+
+ /* queue a resize if needed */
+ if (G_LIKELY (was_visible))
+--
+GitLab
+