diff options
Diffstat (limited to 'src/testcurl/test_toolarge.c')
-rw-r--r-- | src/testcurl/test_toolarge.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/testcurl/test_toolarge.c b/src/testcurl/test_toolarge.c index e6c291e2..05e497a7 100644 --- a/src/testcurl/test_toolarge.c +++ b/src/testcurl/test_toolarge.c | |||
@@ -273,12 +273,17 @@ lcurl_hdr_callback (char *buffer, size_t size, size_t nitems, | |||
273 | check_res->num_n1_headers++; | 273 | check_res->num_n1_headers++; |
274 | else if ((5 <= data_size) && ('0' == buffer[0])) | 274 | else if ((5 <= data_size) && ('0' == buffer[0])) |
275 | { | 275 | { |
276 | const char *const col_ptr = strstr (buffer, ": "); | 276 | const char *const col_ptr = memchr (buffer, ':', data_size); |
277 | if (0 != check_res->large_header_value_size) | 277 | if (0 != check_res->large_header_value_size) |
278 | mhdErrorExitDesc ("Expected only one large header, " \ | 278 | mhdErrorExitDesc ("Expected only one large header, " \ |
279 | "but found two large headers in the reply"); | 279 | "but found two large headers in the reply"); |
280 | check_res->large_header_valid = 0; | 280 | if (NULL == col_ptr) |
281 | if (NULL != col_ptr) | 281 | check_res->large_header_valid = 0; |
282 | else if ((size_t) (col_ptr - buffer) >= data_size - 2) | ||
283 | check_res->large_header_valid = 0; | ||
284 | else if (*(col_ptr + 1) != ' ') | ||
285 | check_res->large_header_valid = 0; | ||
286 | else | ||
282 | { | 287 | { |
283 | const char *const name = buffer; | 288 | const char *const name = buffer; |
284 | const size_t name_len = (size_t) (col_ptr - buffer); | 289 | const size_t name_len = (size_t) (col_ptr - buffer); |