gmime r1402 - in trunk: . gmime



Author: fejj
Date: Sat Aug 16 16:16:56 2008
New Revision: 1402
URL: http://svn.gnome.org/viewvc/gmime?rev=1402&view=rev

Log:
2008-08-16  Jeffrey Stedfast  <fejj novell com>

	* gmime/gmime-message.c (process_header): Protect against passing
	a NULL list to internet_address_list_to_string().
	(g_mime_message_add_recipient): Create a new InternetAddressList
	if it doesn't already exist in the hash table.
	(message_add_recipients_from_string): Protect against passing a
	NULL list to internet_address_list_concat().

	* gmime/internet-address.c (_internet_address_list_to_string):
	Fixed the logic to avoid adding a ',' after the last email
	address.



Modified:
   trunk/ChangeLog
   trunk/gmime/gmime-message.c
   trunk/gmime/internet-address.c

Modified: trunk/gmime/gmime-message.c
==============================================================================
--- trunk/gmime/gmime-message.c	(original)
+++ trunk/gmime/gmime-message.c	Sat Aug 16 16:16:56 2008
@@ -169,7 +169,8 @@
 {
 	InternetAddressList *recipients = value;
 	
-	internet_address_list_destroy (recipients);
+	if (recipients)
+		internet_address_list_destroy (recipients);
 	
 	return TRUE;
 }
@@ -634,15 +635,21 @@
 	switch (i) {
 	case HEADER_FROM:
 		g_free (message->from);
-		addrlist = internet_address_list_parse_string (value);
-		message->from = internet_address_list_to_string (addrlist, FALSE);
-		internet_address_list_destroy (addrlist);
+		if ((addrlist = internet_address_list_parse_string (value))) {
+			message->from = internet_address_list_to_string (addrlist, FALSE);
+			internet_address_list_destroy (addrlist);
+		} else {
+			message->from = NULL;
+		}
 		break;
 	case HEADER_REPLY_TO:
 		g_free (message->reply_to);
-		addrlist = internet_address_list_parse_string (value);
-		message->reply_to = internet_address_list_to_string (addrlist, FALSE);
-		internet_address_list_destroy (addrlist);
+		if ((addrlist = internet_address_list_parse_string (value))) {
+			message->reply_to = internet_address_list_to_string (addrlist, FALSE);
+			internet_address_list_destroy (addrlist);
+		} else {
+			message->reply_to = NULL;
+		}
 		break;
 	case HEADER_TO:
 		message_add_recipients_from_string (message, GMIME_RECIPIENT_TYPE_TO, value);
@@ -1057,8 +1064,10 @@
 	
 	ia = internet_address_new_name (name, address);
 	
-	recipients = g_hash_table_lookup (message->recipients, recipient_types[type]);
-	g_hash_table_remove (message->recipients, recipient_types[type]);
+	if ((recipients = g_hash_table_lookup (message->recipients, recipient_types[type])))
+		g_hash_table_remove (message->recipients, recipient_types[type]);
+	else
+		recipients = internet_address_list_new ();
 	
 	internet_address_list_add (recipients, ia);
 	internet_address_unref (ia);
@@ -1073,15 +1082,20 @@
 {
 	InternetAddressList *recipients, *addrlist;
 	
-	recipients = g_hash_table_lookup (message->recipients, recipient_types[type]);
-	g_hash_table_remove (message->recipients, recipient_types[type]);
+	if ((recipients = g_hash_table_lookup (message->recipients, recipient_types[type])))
+		g_hash_table_remove (message->recipients, recipient_types[type]);
 	
 	if ((addrlist = internet_address_list_parse_string (str))) {
-		internet_address_list_concat (recipients, addrlist);
-		internet_address_list_destroy (addrlist);
+		if (recipients != NULL) {
+			internet_address_list_concat (recipients, addrlist);
+			internet_address_list_destroy (addrlist);
+		} else {
+			recipients = addrlist;
+		}
 	}
 	
-	g_hash_table_insert (message->recipients, (char *) recipient_types[type], recipients);
+	if (recipients)
+		g_hash_table_insert (message->recipients, (char *) recipient_types[type], recipients);
 }
 
 

Modified: trunk/gmime/internet-address.c
==============================================================================
--- trunk/gmime/internet-address.c	(original)
+++ trunk/gmime/internet-address.c	Sat Aug 16 16:16:56 2008
@@ -835,7 +835,7 @@
 	for (i = 0; i < list->array->len; i++) {
 		_internet_address_to_string (list->array->pdata[i], flags, linelen, string);
 		
-		if (i < list->array->len) {
+		if (i + 1 < list->array->len) {
 			g_string_append (string, ", ");
 			*linelen += 2;
 		}



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