"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/lib-mail/test-istream-header-filter.c" between
dovecot-2.3.16.tar.gz and dovecot-2.3.17.tar.gz

About: Dovecot is an IMAP and POP3 server, written with security primarily in mind.

test-istream-header-filter.c  (dovecot-2.3.16):test-istream-header-filter.c  (dovecot-2.3.17)
skipping to change at line 73 skipping to change at line 73
if (first && ((flags & HEADER_FILTER_ADD_MISSING_EOH) != 0)) if (first && ((flags & HEADER_FILTER_ADD_MISSING_EOH) != 0))
test_assert(run_ctx->eoh_seen); test_assert(run_ctx->eoh_seen);
data = i_stream_get_data(filter, size_r); data = i_stream_get_data(filter, size_r);
test_assert(*size_r == strlen(output) && test_assert(*size_r == strlen(output) &&
memcmp(data, output, *size_r) == 0); memcmp(data, output, *size_r) == 0);
test_assert(i_stream_stat(filter, TRUE, &st) == 0 && test_assert(i_stream_stat(filter, TRUE, &st) == 0 &&
(uoff_t)st->st_size == *size_r); (uoff_t)st->st_size == *size_r);
/* make sure buffer doesn't change when returning -1 */
i_stream_skip(filter, 1);
test_assert(i_stream_read(filter) == -1);
test_assert(memcmp(data, output, *size_r) == 0);
} }
static void static void
test_istream_run(struct istream *test_istream, test_istream_run(struct istream *test_istream,
unsigned int input_len, const char *output, unsigned int input_len, const char *output,
enum header_filter_flags flags, enum header_filter_flags flags,
header_filter_callback *callback) header_filter_callback *callback)
{ {
struct run_ctx run_ctx; struct run_ctx run_ctx;
struct istream *filter; struct istream *filter;
skipping to change at line 245 skipping to change at line 250
filter2_callback, filter2_callback,
&null_hdr_seen); &null_hdr_seen);
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
for (;;) { for (;;) {
ssize_t ret = i_stream_read(filter); ssize_t ret = i_stream_read(filter);
i_assert(ret != 0); i_assert(ret != 0);
if (ret == -1) if (ret == -1)
break; break;
if (ret == -2) { if (ret == -2) {
unsigned char orig_data[128];
size_t orig_data_size;
data = i_stream_get_data(filter, &size); data = i_stream_get_data(filter, &size);
orig_data_size = I_MIN(sizeof(orig_data), size);
memcpy(orig_data, data, orig_data_size);
/* skip only a bit */
size = I_MIN(size, 1);
str_append_data(output, data, size);
i_stream_skip(filter, size);
/* do another read */
ret = i_stream_read(filter);
i_assert(ret == -2 || ret > 0);
/* make sure the old data pointer is still
usable if -2 is returned */
if (ret != -2)
data = i_stream_get_data(filter, &size);
else {
test_assert(memcmp(data, orig_data, orig_
data_size) == 0);
data = i_stream_get_data(filter, &size);
}
str_append_data(output, data, size); str_append_data(output, data, size);
i_stream_skip(filter, size); i_stream_skip(filter, size);
} }
} }
/* callbacks are called only once */ /* callbacks are called only once */
test_assert(null_hdr_seen == (i == 0)); test_assert(null_hdr_seen == (i == 0));
data = i_stream_get_data(filter, &size); data = i_stream_get_data(filter, &size);
test_assert(size <= 8192); test_assert(size <= 8192);
str_append_data(output, data, size); str_append_data(output, data, size);
 End of changes. 3 change blocks. 
0 lines changed or deleted 28 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)