[evolution-data-server] [IMAPX] Crash on QRESYNC line formatting on 32bit platform



commit 753a9c25cfc6b76bee4222eb22e948175781c576
Author: Milan Crha <mcrha redhat com>
Date:   Mon Oct 18 16:47:19 2010 +0200

    [IMAPX] Crash on QRESYNC line formatting on 32bit platform

 camel/providers/imapx/camel-imapx-server.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 635b1d2..20082eb 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -576,7 +576,7 @@ imapx_command_addv (CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
 				left = FALSE;
 				fill = FALSE;
 				zero = FALSE;
-				llong = FALSE;
+				llong = 0;
 
 				do {
 					c = *p++;
@@ -596,8 +596,8 @@ imapx_command_addv (CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
 						break;
 				} while ((c = *p++));
 
-				if (c == 'l') {
-					llong = TRUE;
+				while (c == 'l') {
+					llong++;
 					c = *p++;
 				}
 
@@ -691,12 +691,18 @@ imapx_command_addv (CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
 					break;
 				case 'd': /* int/unsigned */
 				case 'u':
-					if (llong) {
+					if (llong == 1) {
 						l = va_arg (ap, glong);
 						c(ic->is->tagprefix, "got glong '%d'\n", (gint)l);
 						memcpy (buffer, start, p-start);
 						buffer[p-start] = 0;
 						camel_stream_printf ((CamelStream *)ic->mem, buffer, l);
+					} else if (llong == 2) {
+						guint64 i64 = va_arg (ap, guint64);
+						c(ic->is->tagprefix, "got guint64 '%d'\n", (gint)i64);
+						memcpy (buffer, start, p-start);
+						buffer[p-start] = 0;
+						camel_stream_printf ((CamelStream *)ic->mem, buffer, i64);
 					} else {
 						d = va_arg (ap, gint);
 						c(ic->is->tagprefix, "got gint '%d'\n", d);



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