Add a test for the overflow in the chunk size length in a "Transfer-
Encoding: chunked" response.
* test/test_buckets.c
(test_response_body_chunked_overflow_len): New test.
(test_buckets): Add new test.
git-svn-id: https://svn.apache.org/repos/asf/serf/trunk@1804010 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/test_buckets.c b/test/test_buckets.c
index a8a1f8c..274543b 100644
--- a/test/test_buckets.c
+++ b/test/test_buckets.c
@@ -1188,6 +1188,38 @@
serf_bucket_destroy(bkt);
}
+static void test_response_body_chunked_overflow_len(CuTest *tc)
+{
+ test_baton_t *tb = tc->testBaton;
+ serf_bucket_t *bkt, *tmp;
+ serf_bucket_alloc_t *alloc = test__create_bucket_allocator(tc, tb->pool);
+
+ tmp = SERF_BUCKET_SIMPLE_STRING("HTTP/1.1 200 OK" CRLF
+ "Content-Type: text/plain" CRLF
+ "Transfer-Encoding: chunked" CRLF
+ CRLF
+ "2" CRLF
+ "AB" CRLF
+ "12345678901234567890123456789" CRLF
+ CRLF,
+ alloc);
+
+ bkt = serf_bucket_response_create(tmp, alloc);
+
+ {
+ char buf[1024];
+ apr_size_t len;
+ apr_status_t status;
+
+ status = read_all(bkt, buf, sizeof(buf), &len);
+
+ CuAssertIntEquals(tc, APR_FROM_OS_ERROR(ERANGE), status);
+ }
+
+ /* This will also destroy response stream bucket. */
+ serf_bucket_destroy(bkt);
+}
+
static void test_response_bucket_peek_at_headers(CuTest *tc)
{
test_baton_t *tb = tc->testBaton;
@@ -3252,6 +3284,7 @@
SUITE_ADD_TEST(suite, test_response_body_chunked_gzip_small);
SUITE_ADD_TEST(suite, test_response_body_chunked_truncated_with_crlf);
SUITE_ADD_TEST(suite, test_response_body_chunked_invalid_len);
+ SUITE_ADD_TEST(suite, test_response_body_chunked_overflow_len);
SUITE_ADD_TEST(suite, test_response_bucket_peek_at_headers);
SUITE_ADD_TEST(suite, test_response_bucket_iis_status_code);
SUITE_ADD_TEST(suite, test_response_bucket_no_reason);