dovecot-2.2: lib-http: test-http-header-parser makes sure the pa...

dovecot at dovecot.org dovecot at dovecot.org
Thu Jul 11 09:33:19 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/feac6ec9fa6e
changeset: 16599:feac6ec9fa6e
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Jul 11 09:33:13 2013 +0300
description:
lib-http: test-http-header-parser makes sure the parser works one byte at a time.

diffstat:

 src/lib-http/test-http-header-parser.c |  16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diffs (36 lines):

diff -r 55ae488349d2 -r feac6ec9fa6e src/lib-http/test-http-header-parser.c
--- a/src/lib-http/test-http-header-parser.c	Thu Jul 11 09:29:36 2013 +0300
+++ b/src/lib-http/test-http-header-parser.c	Thu Jul 11 09:33:13 2013 +0300
@@ -127,20 +127,28 @@
 		const unsigned char *field_data;
 		size_t field_size;
 		int ret;
-		int j;
+		unsigned int j, pos, header_len;
 
 		header = valid_header_parse_tests[i].header;
-		input = i_stream_create_from_data(header, strlen(header));
+		header_len = strlen(header);
+		input = test_istream_create_data(header, header_len);
 		parser = http_header_parser_init(input);
 
 		test_begin(t_strdup_printf("http header valid [%d]", i));
 
-		j = 0;
+		j = 0; pos = 0; test_istream_set_size(input, 0);
 		while ((ret=http_header_parse_next_field
-			(parser, &field_name, &field_data, &field_size, &error)) > 0) {
+			(parser, &field_name, &field_data, &field_size, &error)) >= 0) {
 			const struct http_header_parse_result *result;
 			const char *field_value;
 
+			if (ret == 0) {
+				if (pos == header_len)
+					break;
+				test_istream_set_size(input, ++pos);
+				continue;
+			}
+
 			if (field_name == NULL) break;
 
 			result = &valid_header_parse_tests[i].fields[j];


More information about the dovecot-cvs mailing list