commit: 481235c49f2f6098eedc6af2a8b1acf6153336f4 Author: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> AuthorDate: Mon May 25 16:53:56 2015 +0000 Commit: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> CommitDate: Mon May 25 16:55:28 2015 +0000 URL: https://gitweb.gentoo.org/proj/gnome.git/commit/?id=481235c4
gnome-base/gnome-settings-daemon: fix segfault with wacom tablet (bug #550368) Package-Manager: portage-2.2.20 Manifest-Sign-Key: 0x18E5B6F2D8D5EC8D ...ttings-daemon-3.16.2-settings_set_display.patch | 47 ++++++++++++++++++++++ ...uild => gnome-settings-daemon-3.16.2-r1.ebuild} | 3 ++ 2 files changed, 50 insertions(+) diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.16.2-settings_set_display.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.16.2-settings_set_display.patch new file mode 100644 index 0000000..a8116b6 --- /dev/null +++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.16.2-settings_set_display.patch @@ -0,0 +1,47 @@ +From 804a75e86c8aafa46ff3c99933d1c8cd54ba7fcc Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetrom...@gentoo.org> +Date: Mon, 25 May 2015 12:35:13 -0400 +Subject: [PATCH] common: settings_set_display(): fix segfault when output == + NULL + +If settings_set_display() was called with output == NULL, edid remained +initialized to NULLs, but an array of NULLs is an illegal value for +KEY_DISPLAY settings, which has type "as". + +https://bugzilla.gnome.org/show_bug.cgi?id=749844 +--- + plugins/common/gsd-device-mapper.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/plugins/common/gsd-device-mapper.c b/plugins/common/gsd-device-mapper.c +index ce70fd0..c8a1a1a 100644 +--- a/plugins/common/gsd-device-mapper.c ++++ b/plugins/common/gsd-device-mapper.c +@@ -365,7 +365,8 @@ static void + settings_set_display (GSettings *settings, + GnomeRROutput *output) + { +- gchar **prev, *edid[4] = { NULL, NULL, NULL, NULL }; ++ /* KEY_DISPLAY is type "as", so edid[0..2] must not be NULL */ ++ gchar **prev, *edid[4] = { "", "", "", NULL }; + GVariant *value; + gsize nvalues; + +@@ -384,9 +385,11 @@ settings_set_display (GSettings *settings, + g_settings_set_value (settings, KEY_DISPLAY, value); + } + +- g_free (edid[0]); +- g_free (edid[1]); +- g_free (edid[2]); ++ if (output) { ++ g_free (edid[0]); ++ g_free (edid[1]); ++ g_free (edid[2]); ++ } + g_strfreev (prev); + } + +-- +2.4.1 + diff --git a/gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2.ebuild b/gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2-r1.ebuild similarity index 97% rename from gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2.ebuild rename to gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2-r1.ebuild index d152d45..2836e3b 100644 --- a/gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2.ebuild +++ b/gnome-base/gnome-settings-daemon/gnome-settings-daemon-3.16.2-r1.ebuild @@ -103,6 +103,9 @@ src_prepare() { # Make colord and wacom optional; requires eautoreconf epatch "${FILESDIR}"/${PN}-3.16.0-optional.patch + # Fix segfault, https://bugzilla.gnome.org/show_bug.cgi?id=749844 + epatch "${FILESDIR}"/${PN}-3.16.2-settings_set_display.patch + epatch_user eautoreconf