From 05817ac1224ed1fc9853095b312dfface4fd3479 Mon Sep 17 00:00:00 2001 From: Jon Trowbridge Date: Mon, 14 May 2001 21:04:35 +0000 Subject: Replicate the semantics of the libunicode utf8 functions by returning NULL 2001-05-14 Jon Trowbridge * camel-search-private.c (utf8_get): Replicate the semantics of the libunicode utf8 functions by returning NULL in the arg on invalid utf8. * camel-pgp-context.c (pgp_verify): Check for valid utf8, terminate loop if something looks wrong. * camel-mime-utils.c (header_encode_phrase_get_words): Properly check for invalid utf8. (header_encode_string): Properly check for invalid utf8. * camel-charset-map.c (camel_charset_step): Properly check for invalid utf8. 2001-05-14 Jon Trowbridge * e-html-utils.c (is_citation): Check for bad utf8. svn path=/trunk/; revision=9798 --- camel/camel-mime-utils.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'camel/camel-mime-utils.c') diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c index fbfbb3e5be..3d915be1f7 100644 --- a/camel/camel-mime-utils.c +++ b/camel/camel-mime-utils.c @@ -1255,6 +1255,8 @@ header_encode_string (const unsigned char *in) int encoding; GString *out; char *outstr; + + g_return_val_if_fail (g_utf8_validate (in, -1, NULL), NULL); if (in == NULL) return NULL; @@ -1281,13 +1283,14 @@ header_encode_string (const unsigned char *in) const char *newinptr; newinptr = g_utf8_next_char (inptr); - if (newinptr == NULL) { + c = g_utf8_get_char (inptr); + if (newinptr == NULL || !g_unichar_validate (c)) { w(g_warning ("Invalid UTF-8 sequence encountered (pos %d, char '%c'): %s", (inptr-in), inptr[0], in)); inptr++; continue; } - c = g_utf8_get_char (inptr); + if (g_unichar_isspace (c) && !last_was_space) { /* we've reached the end of a 'word' */ @@ -1427,13 +1430,15 @@ header_encode_phrase_get_words (const unsigned char *in) const char *newinptr; newinptr = g_utf8_next_char (inptr); - if (newinptr == NULL) { + c = g_utf8_get_char (inptr); + + if (!g_unichar_validate (c)) { w(g_warning ("Invalid UTF-8 sequence encountered (pos %d, char '%c'): %s", (inptr - in), inptr[0], in)); inptr++; continue; } - c = g_utf8_get_char (inptr); + inptr = newinptr; if (g_unichar_isspace (c)) { -- cgit