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