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
 

Reply via email to