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,51 +1,52 @@ PORTNAME= xfce4-panel PORTVERSION= 4.18.3 +PORTREVISION= 1 CATEGORIES= x11-wm xfce MASTER_SITES= XFCE DIST_SUBDIR= xfce4 MAINTAINER= xfce@FreeBSD.org COMMENT= Xfce's panel WWW= https://docs.xfce.org/xfce/xfce4-panel/start LICENSE= GPLv2 LGPL21 LICENSE_COMB= multi LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING LICENSE_FILE_LGPL21= ${WRKSRC}/COPYING.LIB LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libdbusmenu-gtk3.so:devel/libdbusmenu \ libharfbuzz.so:print/harfbuzz USES= compiler:c11 desktop-file-utils gettext-tools gmake gnome \ libtool pathfix perl5 pkgconfig tar:bzip2 xfce xorg USE_GNOME= cairo gdkpixbuf2 glib20 gtk30 intltool libwnck3 USE_LDCONFIG= yes USE_XFCE= garcon libexo xfconf USE_XORG= ice sm x11 xext GNU_CONFIGURE= yes INSTALL_TARGET= install-strip CONFIGURE_ARGS= --enable-gio-unix --without-html-dir PORTSCOUT= limitw:1,even OPTIONS_DEFINE= GIR NLS VAPI OPTIONS_DEFAULT= GIR VAPI OPTIONS_SUB= yes GIR_DESC= Use Gobject Introspection GIR_USE= gnome=introspection:build GIR_CONFIGURE_ON= --enable-introspection=yes GIR_CONFIGURE_OFF= --enable-introspection=no NLS_CONFIGURE_ENABLE= nls NLS_USES= gettext-runtime VAPI_USES= vala:build VAPI_CONFIGURE_ENABLE= vala VAPI_IMPLIES= GIR .include 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?= +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 +