dovecot-2.0: message [header] decoder: Output only valid UTF-8 d...

dovecot at dovecot.org dovecot at dovecot.org
Wed May 11 15:20:24 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.0/rev/c392158f374d
changeset: 12793:c392158f374d
user:      Timo Sirainen <tss at iki.fi>
date:      Wed May 11 15:19:34 2011 +0300
description:
message [header] decoder: Output only valid UTF-8 data.

diffstat:

 src/lib-mail/message-decoder.c       |  6 +++++-
 src/lib-mail/message-header-decode.c |  3 ++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diffs (35 lines):

diff -r cef76cf2cec9 -r c392158f374d src/lib-mail/message-decoder.c
--- a/src/lib-mail/message-decoder.c	Wed May 11 15:17:02 2011 +0300
+++ b/src/lib-mail/message-decoder.c	Wed May 11 15:19:34 2011 +0300
@@ -168,13 +168,17 @@
 		(void)uni_utf8_to_decomposed_titlecase(hdr->name, hdr->name_len,
 						       ctx->buf);
 		buffer_append_c(ctx->buf, '\0');
+	} else {
+		if (!uni_utf8_get_valid_data((const unsigned char *)hdr->name,
+					     hdr->name_len, ctx->buf))
+			buffer_append_c(ctx->buf, '\0');
 	}
 
 	ctx->hdr = *hdr;
 	ctx->hdr.full_value = ctx->buf->data;
 	ctx->hdr.full_value_len = value_len;
 	ctx->hdr.value_len = 0;
-	if (dtcase) {
+	if (ctx->buf->used != value_len) {
 		ctx->hdr.name = CONST_PTR_OFFSET(ctx->buf->data,
 						 ctx->hdr.full_value_len);
 		ctx->hdr.name_len = ctx->buf->used - 1 - value_len;
diff -r cef76cf2cec9 -r c392158f374d src/lib-mail/message-header-decode.c
--- a/src/lib-mail/message-header-decode.c	Wed May 11 15:17:02 2011 +0300
+++ b/src/lib-mail/message-header-decode.c	Wed May 11 15:19:34 2011 +0300
@@ -160,7 +160,8 @@
 			(void)uni_utf8_to_decomposed_titlecase(data, size,
 							       ctx->dest);
 		} else {
-			buffer_append(ctx->dest, data, size);
+			if (uni_utf8_get_valid_data(data, size, ctx->dest))
+				buffer_append(ctx->dest, data, size);
 		}
 		return TRUE;
 	}


More information about the dovecot-cvs mailing list