Mercurial > dovecot > core-2.2
changeset 12286:0d689c112c6e
istream-header-filter: Assert-crash if headers aren't given sorted.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 15 Oct 2010 19:50:51 +0100 |
parents | 9dd776345b22 |
children | d44e64390bdd |
files | src/lib-mail/istream-header-filter.c src/lib-mail/test-istream-header-filter.c |
diffstat | 2 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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;