commit:     052b63d2d346d46c33052d126cdb46f4d93b4131
Author:     Ian Jordan <immoloism <AT> gmail <DOT> com>
AuthorDate: Thu Jul 10 07:10:00 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Jul 13 06:45:52 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=052b63d2

mate-extra/mate-sensors-applet: Fix an invalid pointer crash

Fix an invalid pointer crash with glib 2.83.2
The typecast to non-const gchar produced invalid pointer errors on free() with 
glib 2.83.2

Not entirely sure why this wasn't included with 1.28.0 release, however as a 
Gentoo user has reported it resolves the issue for them and Fedora are using 
the same patch in https://bugzilla.redhat.com/show_bug.cgi?id=2326719 then I 
see no issue to cherrypick this before the 1.28.1 release.

Closes: https://bugs.gentoo.org/959761
Signed-off-by: Ian Jordan <immoloism <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/42944
Closes: https://github.com/gentoo/gentoo/pull/42944
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...ate-sensors-applet-1.28.0-invalid-pointer.patch | 45 +++++++++++++++
 .../mate-sensors-applet-1.28.0-r1.ebuild           | 65 ++++++++++++++++++++++
 2 files changed, 110 insertions(+)

diff --git 
a/mate-extra/mate-sensors-applet/files/mate-sensors-applet-1.28.0-invalid-pointer.patch
 
b/mate-extra/mate-sensors-applet/files/mate-sensors-applet-1.28.0-invalid-pointer.patch
new file mode 100644
index 000000000000..aebe84572e56
--- /dev/null
+++ 
b/mate-extra/mate-sensors-applet/files/mate-sensors-applet-1.28.0-invalid-pointer.patch
@@ -0,0 +1,45 @@
+From: 
https://github.com/mate-desktop/mate-sensors-applet/commit/9b74dc16d852a40d37f7ce6c236406959fd013e5
+From: lukefromdc <[email protected]>
+Date: Mon, 13 Jan 2025 22:39:13 -0500
+Subject: [PATCH] Fix an invalid pointer crash with glib 2.83.2
+
+The typecast to non-const gchar produced invalid pointer errors on free() with 
glib 2.83.2
+--- a/plugins/udisks2/udisks2-plugin.c
++++ b/plugins/udisks2/udisks2-plugin.c
+@@ -304,16 +304,15 @@ syslog(LOG_ERR, "propdict2 type: %s", 
g_variant_print(propdict2, TRUE));
+ #endif
+ 
+             /* get data */
+-            gchar *id = NULL;
+-            gchar *model = NULL;
++            const gchar *id = NULL;
++            const gchar *model = NULL;
+ 
+             gboolean smartenabled;
+             gdouble temp;
+ 
+-            /* NULL, bc we don't care about the length of the string
+-             * typecast bc g_variant_get_string() returns const char* */
+-            id = (gchar *) g_variant_get_string (g_variant_lookup_value 
(propdict, "Id", G_VARIANT_TYPE_STRING), NULL);
+-            model = (gchar *) g_variant_get_string (g_variant_lookup_value 
(propdict, "Model", G_VARIANT_TYPE_STRING), NULL);
++            /* NULL, bc we don't care about the length of the string*/
++            id = g_variant_get_string (g_variant_lookup_value (propdict, 
"Id", G_VARIANT_TYPE_STRING), NULL);
++            model = g_variant_get_string (g_variant_lookup_value (propdict, 
"Model", G_VARIANT_TYPE_STRING), NULL);
+ 
+             smartenabled = g_variant_get_boolean (g_variant_lookup_value 
(propdict2, "SmartEnabled", G_VARIANT_TYPE_BOOLEAN));
+             temp = g_variant_get_double (g_variant_lookup_value (propdict2, 
"SmartTemperature", G_VARIANT_TYPE_DOUBLE));
+@@ -366,14 +365,6 @@ syslog(LOG_ERR, "No temp data for device: %s\n", key);
+ 
+                 g_debug ("No temp data for device: %s\n", key);
+             }
+-
+-#ifdef UD2PD
+-syslog(LOG_ERR, "b4 free1");
+-#endif
+-
+-            g_free (id);
+-            g_free (model);
+-
+         }
+ 
+ #ifdef UD2PD

diff --git 
a/mate-extra/mate-sensors-applet/mate-sensors-applet-1.28.0-r1.ebuild 
b/mate-extra/mate-sensors-applet/mate-sensors-applet-1.28.0-r1.ebuild
new file mode 100644
index 000000000000..225c5ad305ab
--- /dev/null
+++ b/mate-extra/mate-sensors-applet/mate-sensors-applet-1.28.0-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MATE_LA_PUNT="yes"
+
+inherit mate
+
+MINOR=$(($(ver_cut 2) % 2))
+if [[ ${MINOR} -eq 0 ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
+fi
+
+DESCRIPTION="MATE panel applet to display readings from hardware sensors"
+LICENSE="FDL-1.1+ GPL-2+"
+SLOT="0"
+
+IUSE="+dbus hddtemp libnotify lm-sensors video_cards_nvidia"
+
+COMMON_DEPEND="
+       >=dev-libs/glib-2.50:2
+       >=mate-base/mate-panel-1.28.0
+       >=x11-libs/cairo-1.0.4
+       x11-libs/gdk-pixbuf:2
+       >=x11-libs/gtk+-3.22:3
+       hddtemp? ( >=app-admin/hddtemp-0.3_beta13 )
+       libnotify? ( >=x11-libs/libnotify-0.7 )
+       lm-sensors? ( sys-apps/lm-sensors )
+       video_cards_nvidia? ( 
>=x11-drivers/nvidia-drivers-100.14.09:0[static-libs,tools] )
+"
+
+RDEPEND="${COMMON_DEPEND}
+       virtual/libintl
+"
+
+BDEPEND="${COMMON_DEPEND}
+       app-text/rarian
+       app-text/yelp-tools
+       >=sys-devel/gettext-0.19.8
+       virtual/pkgconfig
+"
+
+PDEPEND="hddtemp? ( dbus? ( sys-fs/udisks:2 ) )"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.28.0-invalid-pointer.patch #959761
+)
+
+src_configure() {
+       local udisks
+
+       if use hddtemp && use dbus; then
+               udisks="--enable-udisks2"
+       else
+               udisks="--disable-udisks2"
+       fi
+
+       mate_src_configure \
+               --disable-netbsd \
+               $(use_enable libnotify) \
+               $(use_with lm-sensors libsensors) \
+               $(use_with video_cards_nvidia nvidia) \
+               ${udisks}
+}

Reply via email to