libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit f032145edcb39e0445e4f78fec51867b9f89706c
parent c37cf719089756c01eb12608ab8bfbdd721940e9
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Wed, 15 Sep 2021 11:48:20 +0300

test_postprocessor: added check with empty key

Diffstat:
Msrc/microhttpd/test_postprocessor.c | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+), 0 deletions(-)

diff --git a/src/microhttpd/test_postprocessor.c b/src/microhttpd/test_postprocessor.c @@ -653,6 +653,57 @@ test_overflow () } +static int +test_empty_key (void) +{ + const char form_data[] = "=abcdef"; + size_t step; + const size_t size = MHD_STATICSTR_LEN_ (form_data); + + for (step = 1; size >= step; ++step) + { + size_t i; + struct MHD_Connection connection; + struct MHD_HTTP_Header header; + struct MHD_PostProcessor *pp; + memset (&connection, 0, sizeof (struct MHD_Connection)); + memset (&header, 0, sizeof (struct MHD_HTTP_Header)); + + connection.headers_received = &header; + connection.headers_received_tail = &header; + header.header = MHD_HTTP_HEADER_CONTENT_TYPE; + header.header_size = MHD_STATICSTR_LEN_ (MHD_HTTP_HEADER_CONTENT_TYPE); + header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED; + header.value_size = + MHD_STATICSTR_LEN_ (MHD_HTTP_POST_ENCODING_FORM_URLENCODED); + header.kind = MHD_HEADER_KIND; + pp = MHD_create_post_processor (&connection, + 1024, &value_checker, NULL); + if (NULL == pp) + { + fprintf (stderr, "Failed to create post processor.\n" + "Line: %u\n", (unsigned int) __LINE__); + exit (50); + } + for (i = 0; size > i; i += step) + { + if (MHD_NO != MHD_post_process (pp, + form_data + i, + (step > size - i) ? (size - i) : step)) + { + fprintf (stderr, "Succeed to process the broken data.\n" + "i: %u. step: %u.\n" + "Line: %u\n", (unsigned) i, (unsigned) step, + (unsigned int) __LINE__); + exit (49); + } + } + MHD_destroy_post_processor (pp); + } + return 0; +} + + int main (int argc, char *const *argv) { @@ -665,6 +716,7 @@ main (int argc, char *const *argv) errorCount += test_multipart (); errorCount += test_nested_multipart (); errorCount += test_empty_value (); + errorCount += test_empty_key (); errorCount += test_overflow (); if (errorCount != 0) fprintf (stderr, "Error (code: %u)\n", errorCount);