dovecot-2.0: istream-header-filter: Assert-crash if headers aren...

dovecot at dovecot.org dovecot at dovecot.org
Fri Oct 15 21:50:56 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/0d689c112c6e
changeset: 12286:0d689c112c6e
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Oct 15 19:50:51 2010 +0100
description:
istream-header-filter: Assert-crash if headers aren't given sorted.

diffstat:

 src/lib-mail/istream-header-filter.c      |  5 ++++-
 src/lib-mail/test-istream-header-filter.c |  8 ++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diffs (45 lines):

diff -r 9dd776345b22 -r 0d689c112c6e src/lib-mail/istream-header-filter.c
--- a/src/lib-mail/istream-header-filter.c	Fri Oct 15 19:40:06 2010 +0100
+++ b/src/lib-mail/istream-header-filter.c	Fri Oct 15 19:50:51 2010 +0100
@@ -509,8 +509,11 @@
 
 	mstream->headers = headers_count == 0 ? NULL :
 		p_new(mstream->pool, const char *, headers_count);
-	for (i = 0; i < headers_count; i++) 
+	for (i = 0; i < headers_count; i++)  {
+		i_assert(i == 0 ||
+			 strcmp(mstream->headers[i-1], headers[i]) < 0);
 		mstream->headers[i] = p_strdup(mstream->pool, headers[i]);
+	}
 	mstream->headers_count = headers_count;
 	mstream->hdr_buf = buffer_create_dynamic(mstream->pool, 1024);
 
diff -r 9dd776345b22 -r 0d689c112c6e src/lib-mail/test-istream-header-filter.c
--- a/src/lib-mail/test-istream-header-filter.c	Fri Oct 15 19:40:06 2010 +0100
+++ b/src/lib-mail/test-istream-header-filter.c	Fri Oct 15 19:50:51 2010 +0100
@@ -18,8 +18,8 @@
 
 static void test_istream_filter(void)
 {
-	static const char *exclude_headers[] = { "To", NULL };
-	const char *input = "From: foo\nFrom: abc\nTo: bar\n\nhello world\n";
+	static const char *exclude_headers[] = { "Subject", "To", NULL };
+	const char *input = "From: foo\nFrom: abc\nTo: bar\nSubject: plop\n\nhello world\n";
 	const char *output = "From: abc\n\nhello world\n";
 	struct istream *istream, *filter, *filter2;
 	unsigned int i, input_len = strlen(input);
@@ -32,12 +32,12 @@
 	filter = i_stream_create_header_filter(istream,
 					       HEADER_FILTER_EXCLUDE |
 					       HEADER_FILTER_NO_CR,
-					       exclude_headers, 1,
+					       exclude_headers, 2,
 					       filter_callback, NULL);
 	filter2 = i_stream_create_header_filter(filter,
 						HEADER_FILTER_EXCLUDE |
 						HEADER_FILTER_NO_CR,
-						exclude_headers, 1,
+						exclude_headers, 2,
 						null_header_filter_callback, NULL);
 	i_stream_unref(&filter);
 	filter = filter2;


More information about the dovecot-cvs mailing list