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