dovecot-2.0-sslstream: message header parser: Require input buff...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 02:55:47 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/233cda69b00a
changeset: 10209:233cda69b00a
user: Timo Sirainen <tss at iki.fi>
date: Tue Oct 27 16:09:09 2009 -0400
description:
message header parser: Require input buffer to be larger than 1 byte to avoid hangs.
diffstat:
2 files changed, 3 insertions(+), 2 deletions(-)
src/lib-mail/message-header-parser.c | 1 +
src/lib-mail/test-message-header-parser.c | 4 ++--
diffs (30 lines):
diff -r ee3f9bc4f5b7 -r 233cda69b00a src/lib-mail/message-header-parser.c
--- a/src/lib-mail/message-header-parser.c Tue Oct 27 16:04:22 2009 -0400
+++ b/src/lib-mail/message-header-parser.c Tue Oct 27 16:09:09 2009 -0400
@@ -136,6 +136,7 @@ int message_parse_header_next(struct mes
b) header ended unexpectedly */
if (colon_pos == UINT_MAX && ret == -2 && !continued) {
/* header name is huge. just skip it. */
+ i_assert(size > 1);
if (msg[size-1] == '\r')
size--;
diff -r ee3f9bc4f5b7 -r 233cda69b00a src/lib-mail/test-message-header-parser.c
--- a/src/lib-mail/test-message-header-parser.c Tue Oct 27 16:04:22 2009 -0400
+++ b/src/lib-mail/test-message-header-parser.c Tue Oct 27 16:09:09 2009 -0400
@@ -225,13 +225,13 @@ static void test_message_header_parser_l
test_begin("message header parser long lines");
len = strlen(lf_str);
- for (i = 1; i < len; i++) {
+ for (i = 2; i < len; i++) {
test_message_header_parser_long_lines_str(lf_str, i, &hdr_size);
test_assert(hdr_size.physical_size == len);
test_assert(hdr_size.virtual_size == len + 2);
}
len = strlen(crlf_str);
- for (i = 1; i < len; i++) {
+ for (i = 2; i < len; i++) {
test_message_header_parser_long_lines_str(crlf_str, i, &hdr_size);
test_assert(hdr_size.physical_size == len);
test_assert(hdr_size.virtual_size == len);
More information about the dovecot-cvs
mailing list