]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
istream-header-filter: Assert-crash if headers aren't given sorted.
authorTimo Sirainen <tss@iki.fi>
Fri, 15 Oct 2010 18:50:51 +0000 (19:50 +0100)
committerTimo Sirainen <tss@iki.fi>
Fri, 15 Oct 2010 18:50:51 +0000 (19:50 +0100)
src/lib-mail/istream-header-filter.c
src/lib-mail/test-istream-header-filter.c

index f0a9ffbdf6e620877ea0b8f6d2d4b7b973cc3196..255163eb34a7537ded80bf1d44c8973c30b36731 100644 (file)
@@ -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);
 
index f292fec3a5d3c23a5fb94b547c01060f3f39dd17..df92a515d437d982d7f3fdaf4bf99bd01e393c58 100644 (file)
@@ -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;