From: Milan Crha Date: Fri, 25 Jul 2008 09:57:25 +0000 (+0000) Subject: ** Fix for bug #544651 X-Git-Tag: upstream/3.7.4~4815 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1c30da9b3a8de1e76011e58c57e78bde44010ce1;p=platform%2Fupstream%2Fevolution-data-server.git ** Fix for bug #544651 2008-07-25 Milan Crha ** Fix for bug #544651 * camel-folder-summary.c: (EXTRACT_FIRST_STRING), (EXTRACT_STRING): Properly update string position after read (thanks to srag). * camel-folder-summary.c: (EXTRACT_DIGIT): Prevent moving beyond string limit. * camel-folder-summary.c: (camel_read_mir_callback): Do not access NULL. * camel-folder-summary.c: (my_list_append): Interpret and update given list pointer properly. svn path=/trunk/; revision=9192 --- diff --git a/camel/ChangeLog b/camel/ChangeLog index f28e92f..a41451f 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,18 @@ 2008-07-25 Milan Crha + ** Fix for bug #544651 + + * camel-folder-summary.c: (EXTRACT_FIRST_STRING), (EXTRACT_STRING): + Properly update string position after read (thanks to srag). + * camel-folder-summary.c: (EXTRACT_DIGIT): + Prevent moving beyond string limit. + * camel-folder-summary.c: (camel_read_mir_callback): + Do not access NULL. + * camel-folder-summary.c: (my_list_append): + Interpret and update given list pointer properly. + +2008-07-25 Milan Crha + ** Fix for bug #544031 * camel-vee-folder.c: (vee_folder_remove_folder): diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c index 71b7006..7242b57 100644 --- a/camel/camel-folder-summary.c +++ b/camel/camel-folder-summary.c @@ -88,10 +88,10 @@ extern int strdup_count, malloc_count, free_count; #define META_SUMMARY_SUFFIX_LEN 5 /* strlen("-meta") */ -#define EXTRACT_FIRST_STRING(val) len=strtoul (part, &part, 10); part++; val=g_strndup (part, len); -#define EXTRACT_STRING(val) part++; len=strtoul (part, &part, 10); part++; val=g_strndup (part, len); +#define EXTRACT_FIRST_STRING(val) len=strtoul (part, &part, 10); if (*part) part++; val=g_strndup (part, len); part+=len; +#define EXTRACT_STRING(val) if (*part) part++; len=strtoul (part, &part, 10); if (*part) part++; val=g_strndup (part, len); part+=len; #define EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10); -#define EXTRACT_DIGIT(val) part++; val=strtoul (part, &part, 10); +#define EXTRACT_DIGIT(val) if (*part) part++; val=strtoul (part, &part, 10); /* trivial lists, just because ... */ struct _node { @@ -937,6 +937,11 @@ camel_read_mir_callback (void * ref, int ncol, char ** cols, char ** name) info = NULL; } mir->cinfo = tmp; + + if (!info) { + camel_db_camel_mir_free (mir); + return -1; + } } if (data->double_ref) @@ -2265,10 +2270,16 @@ camel_folder_summary_decode_token(FILE *in, char **str) static struct _node * my_list_append(struct _node **list, struct _node *n) { - struct _node *ln = (struct _node *)list; + struct _node *ln = *list; + n->next = NULL; + + if (!ln) { + *list = n; + return n; + } + while (ln->next) ln = ln->next; - n->next = NULL; ln->next = n; return n; }