From: Timo Sirainen Date: Fri, 15 Oct 2010 18:50:51 +0000 (+0100) Subject: istream-header-filter: Assert-crash if headers aren't given sorted. X-Git-Tag: 2.0.6~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=701a594c661ee65ce822e3494ee36a4369f62a71;p=thirdparty%2Fdovecot%2Fcore.git istream-header-filter: Assert-crash if headers aren't given sorted. --- diff --git a/src/lib-mail/istream-header-filter.c b/src/lib-mail/istream-header-filter.c index f0a9ffbdf6..255163eb34 100644 --- a/src/lib-mail/istream-header-filter.c +++ b/src/lib-mail/istream-header-filter.c @@ -509,8 +509,11 @@ i_stream_create_header_filter(struct istream *input, 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 --git a/src/lib-mail/test-istream-header-filter.c b/src/lib-mail/test-istream-header-filter.c index f292fec3a5..df92a515d4 100644 --- a/src/lib-mail/test-istream-header-filter.c +++ b/src/lib-mail/test-istream-header-filter.c @@ -18,8 +18,8 @@ static void filter_callback(struct message_header_line *hdr, 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 @@ static void test_istream_filter(void) 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;