[gnome-desktop3] - Fix a possible double-free crasher

Bastien Nocera hadess at fedoraproject.org
Thu Nov 11 14:01:12 UTC 2010


commit 752dc9e4b159519726ac088a1f8bb7ddf40afaa2
Author: Bastien Nocera <hadess at hadess.net>
Date:   Thu Nov 11 14:01:09 2010 +0000

    - Fix a possible double-free crasher

 ...e-double-free-when-destroying-private-win.patch |   38 ++++++++++++++++
 cairo-drawing.patch                                |   46 --------------------
 display-cleanup.patch                              |   20 ---------
 gnome-desktop3.spec                                |    9 +++-
 4 files changed, 46 insertions(+), 67 deletions(-)
---
diff --git a/0001-Fix-possible-double-free-when-destroying-private-win.patch b/0001-Fix-possible-double-free-when-destroying-private-win.patch
new file mode 100644
index 0000000..405bc96
--- /dev/null
+++ b/0001-Fix-possible-double-free-when-destroying-private-win.patch
@@ -0,0 +1,38 @@
+From 7e967de7dff160d7302b1ab66db3f9054b8373b3 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 11 Nov 2010 13:21:21 +0000
+Subject: [PATCH] Fix possible double-free when destroying private windows
+
+This could cause free'ing random data when the members of ->windows
+were destroyed, but ->windows itself wasn't. As it was != NULL, we'd
+be free memory that wouldn't belong to us anymore.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=634534
+---
+ libgnome-desktop/gnome-rr-labeler.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/libgnome-desktop/gnome-rr-labeler.c b/libgnome-desktop/gnome-rr-labeler.c
+index 1de4569..ebf9905 100644
+--- a/libgnome-desktop/gnome-rr-labeler.c
++++ b/libgnome-desktop/gnome-rr-labeler.c
+@@ -411,11 +411,16 @@ gnome_rr_labeler_hide (GnomeRRLabeler *labeler)
+ 
+ 	g_return_if_fail (GNOME_IS_RR_LABELER (labeler));
+ 
++	if (labeler->windows == NULL)
++		return;
++
+ 	for (i = 0; i < labeler->num_outputs; i++)
+ 		if (labeler->windows[i] != NULL) {
+ 			gtk_widget_destroy (labeler->windows[i]);
+ 			labeler->windows[i] = NULL;
+ 		}
++	g_free (labeler->windows);
++	labeler->windows = NULL;
+ }
+ 
+ void
+-- 
+1.7.3.2
+
diff --git a/gnome-desktop3.spec b/gnome-desktop3.spec
index ad18c9b..a0646c9 100644
--- a/gnome-desktop3.spec
+++ b/gnome-desktop3.spec
@@ -9,7 +9,7 @@
 Summary: Shared code among gnome-panel, gnome-session, nautilus, etc
 Name: gnome-desktop3
 Version: 2.91.1
-Release: 1%{?dist}
+Release: 2%{?dist}
 URL: http://www.gnome.org
 Source0: http://download.gnome.org/sources/gnome-desktop/2.91/gnome-desktop-%{version}.tar.bz2
 License: GPLv2+ and LGPLv2+
@@ -36,6 +36,9 @@ BuildRequires: gettext
 BuildRequires: gtk-doc >= %{gtk_doc_version}
 BuildRequires: automake autoconf libtool intltool
 
+# Upstream patch
+Patch0: 0001-Fix-possible-double-free-when-destroying-private-win.patch
+
 %description
 
 The gnome-desktop package contains an internal library
@@ -63,6 +66,7 @@ libgnomedesktop.
 
 %prep
 %setup -q -n gnome-desktop-%{version}
+%patch0 -p1 -b .double-free
 
 %build
 %configure --with-gnome-distributor="Red Hat, Inc" \
@@ -110,6 +114,9 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gnome-about*
 %doc %{_datadir}/gtk-doc/html/gnome-desktop3/
 
 %changelog
+* Thu Nov 11 2010 Bastien Nocera <bnocera at redhat.com> 2.91.1-2
+- Fix a possible double-free crasher
+
 * Wed Nov 10 2010 Bastien Nocera <bnocera at redhat.com> 2.91.1-1
 - Update to 2.91.1
 


More information about the scm-commits mailing list