aboutsummaryrefslogtreecommitdiff
path: root/tests/libtest
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2018-02-16 10:12:46 +0100
committerDaniel Stenberg <daniel@haxx.se>2018-02-16 22:54:50 +0100
commit70cbb921348db5193549efbe30877a0398b559a0 (patch)
tree44538cfa7c42e0dce8038d71edcbcf79f088d912 /tests/libtest
parent367689d8c91228139af735b51ae9ec4968e2df3d (diff)
test1556: verify >16KB headers to the header callback
Diffstat (limited to 'tests/libtest')
-rw-r--r--tests/libtest/Makefile.inc6
-rw-r--r--tests/libtest/lib1556.c78
2 files changed, 83 insertions, 1 deletions
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index c23dedd5e..c47659804 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -27,7 +27,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
lib1534 lib1535 lib1536 lib1537 lib1538 \
lib1540 \
- lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 \
+ lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 \
lib1900 \
lib2033
@@ -481,6 +481,10 @@ lib1555_SOURCES = lib1555.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1555_LDADD = $(TESTUTIL_LIBS)
lib1555_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1555
+lib1556_SOURCES = lib1556.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1556_LDADD = $(TESTUTIL_LIBS)
+lib1556_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1556
+
lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/lib1556.c b/tests/libtest/lib1556.c
new file mode 100644
index 000000000..fa0e60e24
--- /dev/null
+++ b/tests/libtest/lib1556.c
@@ -0,0 +1,78 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+struct headerinfo {
+ size_t largest;
+};
+
+static size_t header(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+ size_t headersize = size * nmemb;
+ struct headerinfo *info = (struct headerinfo *)stream;
+ (void)ptr;
+
+ if(headersize > info->largest)
+ /* remember the longest header */
+ info->largest = headersize;
+
+ return nmemb * size;
+}
+
+int test(char *URL)
+{
+ CURLcode code;
+ CURL *curl = NULL;
+ int res = 0;
+ struct headerinfo info = {0};
+
+ global_init(CURL_GLOBAL_ALL);
+
+ easy_init(curl);
+
+ easy_setopt(curl, CURLOPT_HEADERFUNCTION, header);
+ easy_setopt(curl, CURLOPT_HEADERDATA, &info);
+ easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+ easy_setopt(curl, CURLOPT_URL, URL);
+
+ code = curl_easy_perform(curl);
+ if(CURLE_OK != code) {
+ fprintf(stderr, "%s:%d curl_easy_perform() failed, "
+ "with code %d (%s)\n",
+ __FILE__, __LINE__, (int)code, curl_easy_strerror(code));
+ res = TEST_ERR_MAJOR_BAD;
+ goto test_cleanup;
+ }
+
+ printf("Max: %ld\n", (long)info.largest);
+
+test_cleanup:
+
+ curl_easy_cleanup(curl);
+ curl_global_cleanup();
+
+ return res;
+}