changeset 2574:6dfc352ec61b HEAD

Fixes for handling headers longer than input buffer.
author Timo Sirainen <tss@iki.fi>
date Tue, 07 Sep 2004 17:23:25 +0300
parents d10ad1e5a5aa
children 4bc0a68a9b72
files src/lib-mail/message-parser.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c	Tue Sep 07 17:23:01 2004 +0300
+++ b/src/lib-mail/message-parser.c	Tue Sep 07 17:23:25 2004 +0300
@@ -759,16 +759,20 @@
 
 			/* a) line is larger than input buffer
 			   b) header ended unexpectedly */
-			if (colon_pos == UINT_MAX && ret == -2) {
+			if (colon_pos == UINT_MAX && ret == -2 &&
+			    !line->continues) {
 				/* header name is huge. just skip it. */
 				message_skip_line(ctx->input, ctx->hdr_size,
 						  TRUE, &ctx->has_nuls);
+				startpos = 0;
 				continue;
 			}
 
 			if (ret == -2) {
 				/* go back to last LWSP if found. */
-				for (i = size-1; i > colon_pos; i--) {
+				size_t min_pos =
+					!line->continues ? colon_pos : 0;
+				for (i = size-1; i > min_pos; i--) {
 					if (IS_LWSP(msg[i])) {
 						size = i;
 						break;