[evolution] backport a couple of crash fixes

Adam Williamson adamwill at fedoraproject.org
Fri Jan 17 17:28:47 UTC 2014


commit 0fc190307948b99613573e01264e28b9ac521097
Author: Adam Williamson <awilliam at redhat.com>
Date:   Fri Jan 17 09:28:54 2014 -0800

    backport a couple of crash fixes

 evolution-3.11.4-attachment_crash.patch |   37 +++++++++++++++++++++++++++
 evolution-3.11.4-gsettings_crash.patch  |   42 +++++++++++++++++++++++++++++++
 evolution.spec                          |   13 +++++++++-
 3 files changed, 91 insertions(+), 1 deletions(-)
---
diff --git a/evolution-3.11.4-attachment_crash.patch b/evolution-3.11.4-attachment_crash.patch
new file mode 100644
index 0000000..373ff5f
--- /dev/null
+++ b/evolution-3.11.4-attachment_crash.patch
@@ -0,0 +1,37 @@
+From d64150ab966cfd9d661aa06999573fe42fe2671e Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha at redhat.com>
+Date: Fri, 17 Jan 2014 15:24:42 +0000
+Subject: Bug #702958 - Crash on attachment add or remove
+
+---
+diff --git a/e-util/e-attachment.c b/e-util/e-attachment.c
+index ea4f39c..8230eab 100644
+--- a/e-util/e-attachment.c
++++ b/e-util/e-attachment.c
+@@ -334,6 +334,9 @@ attachment_update_icon_column_idle_cb (gpointer weak_ref)
+ 
+ 	if (file_info != NULL) {
+ 		icon = g_file_info_get_icon (file_info);
++		/* add the reference here, thus the create_system_thumbnail() can unref the *icon. */
++		if (icon)
++			g_object_ref (icon);
+ 		thumbnail_path = g_file_info_get_attribute_byte_string (
+ 			file_info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
+ 	}
+@@ -351,11 +354,11 @@ attachment_update_icon_column_idle_cb (gpointer weak_ref)
+ 		/* Nothing to do, just use the icon. */
+ 
+ 	/* Else use the standard icon for the content type. */
+-	} else if (icon != NULL)
+-		g_object_ref (icon);
++	} else if (icon != NULL) {
++		/* Nothing to do, just use the already reffed icon. */
+ 
+ 	/* Last ditch fallback.  (GFileInfo not yet loaded?) */
+-	else
++	} else
+ 		icon = g_themed_icon_new (DEFAULT_ICON_NAME);
+ 
+ 	/* Pick an emblem, limit one.  Choices listed by priority. */
+--
+cgit v0.9.2
diff --git a/evolution-3.11.4-gsettings_crash.patch b/evolution-3.11.4-gsettings_crash.patch
new file mode 100644
index 0000000..53d2c47
--- /dev/null
+++ b/evolution-3.11.4-gsettings_crash.patch
@@ -0,0 +1,42 @@
+From 5a89422182cc9e5e75af808beef19479bab6e9de Mon Sep 17 00:00:00 2001
+From: Matthew Barnes <mbarnes at redhat.com>
+Date: Fri, 17 Jan 2014 02:09:20 +0000
+Subject: Prevent GSettings from freaking out over a missing junk filter.
+
+Boy does GSettings like to abort applications!  The default value for
+the 'junk-default-plugin' key is 'Bogofilter' but if the key's mapping
+function cannot find Evolution's Bogofilter integration module (it is
+optional after all, so may not be installed), then indicating failure
+will make GSettings abort Evolution.  So always indicate success.
+---
+diff --git a/modules/settings/e-settings-mail-session.c b/modules/settings/e-settings-mail-session.c
+index 4665731..188e325 100644
+--- a/modules/settings/e-settings-mail-session.c
++++ b/modules/settings/e-settings-mail-session.c
+@@ -38,7 +38,6 @@ settings_mail_session_name_to_junk_filter (GValue *value,
+                                            gpointer user_data)
+ {
+ 	const gchar *filter_name;
+-	gboolean success = FALSE;
+ 
+ 	filter_name = g_variant_get_string (variant, NULL);
+ 
+@@ -48,10 +47,14 @@ settings_mail_session_name_to_junk_filter (GValue *value,
+ 		junk_filter = e_mail_session_get_junk_filter_by_name (
+ 			E_MAIL_SESSION (user_data), filter_name);
+ 		g_value_set_object (value, junk_filter);
+-		success = (junk_filter != NULL);
+ 	}
+ 
+-	return success;
++	/* XXX Always return success, even if we cannot find a matching
++	 *     EMailJunkFilter.  The default value is 'Bogofilter', but
++	 *     if the Bogofilter module is not installed then GSettings
++	 *     will actually abort the program.  Nice. */
++
++	return TRUE;
+ }
+ 
+ static GVariant *
+--
+cgit v0.9.2
diff --git a/evolution.spec b/evolution.spec
index 21fe6d7..5baf79c 100644
--- a/evolution.spec
+++ b/evolution.spec
@@ -33,7 +33,7 @@
 
 Name: evolution
 Version: 3.11.4
-Release: 1%{?dist}
+Release: 2%{?dist}
 Group: Applications/Productivity
 Summary: Mail and calendar client for GNOME
 License: GPLv2+ and GFDL
@@ -53,6 +53,12 @@ Patch01: evolution-1.4.4-ldap-x86_64-hack.patch
 # RH bug #589555
 Patch02: evolution-2.30.1-help-contents.patch
 
+# Upstream 5a89422182, crashes if bogofilter is not present
+Patch03: evolution-3.11.4-gsettings_crash.patch
+
+# Upstream d64150ab96, crashes on attachment add/remove
+Patch04: evolution-3.11.4-attachment_crash.patch
+
 ## Dependencies ###
 
 Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
@@ -204,6 +210,8 @@ This package contains the plugin to import Microsoft Personal Storage Table
 %setup -q -n evolution-%{version}
 %patch01 -p1 -b .ldaphack
 %patch02 -p1 -b .help-contents
+%patch03 -p1 -b .gsettings_crash
+%patch04 -p1 -b .attachment_crash
 
 mkdir -p krb5-fakeprefix/include
 mkdir -p krb5-fakeprefix/lib
@@ -536,6 +544,9 @@ rm -rf $RPM_BUILD_ROOT
 %endif
 
 %changelog
+* Fri Jan 17 2014 Adam Williamson <awilliam at redhat.com> - 3.11.4-2
+- backport a couple of crasher fixes from upstream master
+
 * Mon Jan 13 2014 Milan Crha <mcrha at redhat.com> - 3.11.4-1
 - Update to 3.11.4
 


More information about the scm-commits mailing list