[evolution-patches] fix for bug #63377



that pesky g_assert (*inptr == '@'); crash again...

surprisingly nothing in the mailer code actually used
the /apps/evolution/mail/display/charset setting until now...

this forces UTF-8 conversion which of course truncates out bad character
sequences which then means that e_trie_search() gets sane input

not sure if we want to bother making e_trie_search() more robust against
garbage non-UTF-8 input, but I had started to look at fixing it that way
originally until I realised that the mailer was simply not doing any
charset conversion (which was a far simpler fix).

I think what is happening in e_trie_search() is that prev is getting set
to an invalid UTF-8 char in one pass of the while-loop and then the next
pass finds a '@' and sets pat = prev; and then returns pat, which of
course is invalid.

or something like that... I thought I had it figured out but now looking
at it I'm confused again so I dunno :)

-- 
Jeffrey Stedfast
Evolution Hacker - Novell, Inc.
fejj ximian com  - www.novell.com
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.3438
diff -u -r1.3438 ChangeLog
--- ChangeLog	24 Aug 2004 02:54:03 -0000	1.3438
+++ ChangeLog	25 Aug 2004 20:55:59 -0000
@@ -1,3 +1,26 @@
+2004-08-25  Jeffrey Stedfast  <fejj novell com>
+
+	Fix for bug #63377
+
+	* em-format.c (em_format_format_text): Make sure that 'charset' is
+	never NULL, if it's NULL, then use 'iso-8859-1' this way we will
+	never pass invalid UTF-8 to the tohtml filter.
+	(emf_init): Init emf->default_charset to use the mailer charset
+	setting (up until now, nothing actually used that in mailer!?!?)
+	(emf_finalise): Free the default_charset string (would have leaked
+	if it were ever actually used before).
+
+2004-08-24  Jeffrey Stedfast  <fejj novell com>
+
+	Fix for bug #63177
+
+	* em-folder-tree.c (emft_drop_async_drop): Check full_name == NULL
+	rather than full_name[0] since store's have NULL full_names, not
+	empty string (like they used to).
+	(emft_drop_folder): Same.
+	(tree_drag_data_received): Don't abort the drop if the user
+	dropped on a store, this is allowed (depending on the store).
+
 2004-08-23  Not Zed  <NotZed Ximian com>
 
 	* em-folder-tree.c (em_folder_tree_set_selected): store the
Index: em-format.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-format.c,v
retrieving revision 1.38
diff -u -r1.38 em-format.c
--- em-format.c	10 Jul 2004 01:31:04 -0000	1.38
+++ em-format.c	25 Aug 2004 20:55:59 -0000
@@ -32,6 +32,8 @@
 #include <libgnomevfs/gnome-vfs-mime-utils.h>
 #include <libgnomevfs/gnome-vfs-mime-handlers.h>
 
+#include <gconf/gconf-client.h>
+
 #include <e-util/e-msgport.h>
 #include <camel/camel-url.h>
 #include <camel/camel-stream.h>
@@ -116,11 +118,16 @@
 emf_init(GObject *o)
 {
 	EMFormat *emf = (EMFormat *)o;
+	GConfClient *gconf;
 	
 	emf->inline_table = g_hash_table_new(g_str_hash, g_str_equal);
 	e_dlist_init(&emf->header_list);
 	em_format_default_headers(emf);
 	emf->part_id = g_string_new("");
+	
+	gconf = gconf_client_get_default ();
+	emf->default_charset = gconf_client_get_string (gconf, "/apps/evolution/mail/display/charset", NULL);
+	g_object_unref (gconf);
 }
 
 static void
@@ -136,6 +143,7 @@
 
 	em_format_clear_headers(emf);
 	camel_cipher_validity_free(emf->valid);
+	g_free (emf->default_charset);
 	g_free(emf->charset);
 	g_string_free(emf->part_id, TRUE);
 
@@ -1016,7 +1024,8 @@
 		
 		charset = camel_mime_filter_windows_real_charset (windows);
 	} else if (charset == NULL) {
-		charset = emf->default_charset;
+		if (!(charset = emf->default_charset))
+			charset = "iso-8859-1";
 	}
 	
 	filter_stream = camel_stream_filter_new_with_stream(stream);

Attachment: smime.p7s
Description: S/MIME cryptographic signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]