gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libmicrohttpd] 02/02: test_postprocessor: added test with double value


From: gnunet
Subject: [libmicrohttpd] 02/02: test_postprocessor: added test with double value
Date: Wed, 15 Sep 2021 18:47:34 +0200

This is an automated email from the git hooks/post-receive script.

karlson2k pushed a commit to branch master
in repository libmicrohttpd.

commit 1cf2ccde32386b2d93305ff6667b088522e03f10
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Wed Sep 15 19:47:17 2021 +0300

    test_postprocessor: added test with double value
---
 src/microhttpd/test_postprocessor.c | 81 +++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)

diff --git a/src/microhttpd/test_postprocessor.c 
b/src/microhttpd/test_postprocessor.c
index 9f89e7fd..b3231c0e 100644
--- a/src/microhttpd/test_postprocessor.c
+++ b/src/microhttpd/test_postprocessor.c
@@ -707,6 +707,86 @@ test_empty_key (void)
 }
 
 
+static int
+test_double_value (void)
+{
+  const char form_data[] = URL_DATA "=abcdef";
+  size_t step;
+  const size_t size = MHD_STATICSTR_LEN_ (form_data);
+  const size_t safe_size = MHD_STATICSTR_LEN_ (URL_DATA);
+
+  for (step = 1; size >= step; ++step)
+  {
+    size_t i;
+    struct MHD_Connection connection;
+    struct MHD_HTTP_Header header;
+    struct MHD_PostProcessor *pp;
+    unsigned int results_off = URL_START;
+    unsigned int results_final = results_off + 1; /* First value is correct */
+    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, &results_off);
+    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))
+      {
+        if (safe_size == i + step)
+          results_final = URL_END;
+        if (safe_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);
+        }
+      }
+      else
+      {
+        if (safe_size >= i + step)
+        {
+          fprintf (stderr, "Failed to process the data.\n"
+                   "i: %u. step: %u.\n"
+                   "Line: %u\n", (unsigned) i, (unsigned) step,
+                   (unsigned int) __LINE__);
+          exit (49);
+        }
+      }
+    }
+    MHD_destroy_post_processor (pp);
+    if (results_final != results_off)
+    {
+      fprintf (stderr,
+               "Test failed in line %u.\tStep:%u\n Got: %u\tExpected: %u\n",
+               (unsigned int) __LINE__,
+               (unsigned int) step,
+               results_off,
+               results_final);
+      return 1;
+    }
+  }
+  return 0;
+}
+
+
 int
 main (int argc, char *const *argv)
 {
@@ -719,6 +799,7 @@ main (int argc, char *const *argv)
   errorCount += test_multipart ();
   errorCount += test_nested_multipart ();
   errorCount += test_empty_key ();
+  errorCount += test_double_value ();
   errorCount += test_overflow ();
   if (errorCount != 0)
     fprintf (stderr, "Error (code: %u)\n", errorCount);

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]