]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
unit1398: test maximum input parameters/output segments
authorDaniel Stenberg <daniel@haxx.se>
Mon, 9 Sep 2024 11:16:13 +0000 (13:16 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 9 Sep 2024 14:49:46 +0000 (16:49 +0200)
...for the mprintf() code

Closes #14833

tests/unit/unit1398.c

index 220665bc52e8508981657994c3a97a1064975797..696eb023bdff18a1408efada83db17214d56e77a 100644 (file)
@@ -34,7 +34,7 @@ int rc;
 char buf[3] = {'b', 'u', 'g'};
 const char *str = "bug";
 int width = 3;
-char output[24];
+char output[130];
 
 /*#define curl_msnprintf snprintf */
 
@@ -93,4 +93,92 @@ fail_unless(!strcmp(output, "    1234    567"), "wrong output");
 rc = curl_msnprintf(output, 24, "%2$.*1$.99d", 3, 5678);
 fail_unless(rc == 0, "return code should be 0");
 
+/* 129 input % flags */
+rc = curl_msnprintf(output, 130,
+                    "%s%s%s%s%s%s%s%s%s%s" /* 10 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 20 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 30 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 40 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 50 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 60 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 70 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 80 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 90 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 100 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 110 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 120 */
+                    "%s%s%s%s%s%s%s%s%s", /* 129 */
+
+                    "a", "", "", "", "", "", "", "", "", "", /* 10 */
+                    "b", "", "", "", "", "", "", "", "", "", /* 20 */
+                    "c", "", "", "", "", "", "", "", "", "", /* 30 */
+                    "d", "", "", "", "", "", "", "", "", "", /* 40 */
+                    "e", "", "", "", "", "", "", "", "", "", /* 50 */
+                    "f", "", "", "", "", "", "", "", "", "", /* 60 */
+                    "g", "", "", "", "", "", "", "", "", "", /* 70 */
+                    "h", "", "", "", "", "", "", "", "", "", /* 80 */
+                    "i", "", "", "", "", "", "", "", "", "", /* 90 */
+                    "j", "", "", "", "", "", "", "", "", "", /* 100 */
+                    "k", "", "", "", "", "", "", "", "", "", /* 110 */
+                    "l", "", "", "", "", "", "", "", "", "", /* 120 */
+                    "m", "", "", "", "", "", "", "", ""  /* 129 */
+  );
+fail_unless(rc == 0, "return code should be 0");
+
+/* 128 input % flags */
+rc = curl_msnprintf(output, 130,
+                    "%s%s%s%s%s%s%s%s%s%s" /* 10 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 20 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 30 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 40 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 50 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 60 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 70 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 80 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 90 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 100 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 110 */
+                    "%s%s%s%s%s%s%s%s%s%s" /* 120 */
+                    "%s%s%s%s%s%s%s%s", /* 128 */
+
+                    "a", "", "", "", "", "", "", "", "", "", /* 10 */
+                    "b", "", "", "", "", "", "", "", "", "", /* 20 */
+                    "c", "", "", "", "", "", "", "", "", "", /* 30 */
+                    "d", "", "", "", "", "", "", "", "", "", /* 40 */
+                    "e", "", "", "", "", "", "", "", "", "", /* 50 */
+                    "f", "", "", "", "", "", "", "", "", "", /* 60 */
+                    "g", "", "", "", "", "", "", "", "", "", /* 70 */
+                    "h", "", "", "", "", "", "", "", "", "", /* 80 */
+                    "i", "", "", "", "", "", "", "", "", "", /* 90 */
+                    "j", "", "", "", "", "", "", "", "", "", /* 100 */
+                    "k", "", "", "", "", "", "", "", "", "", /* 110 */
+                    "l", "", "", "", "", "", "", "", "", "", /* 120 */
+                    "m", "", "", "", "", "", "", ""  /* 128 */
+  );
+fail_unless(rc == 13, "return code should be 13");
+
+/* 129 output segments */
+rc = curl_msnprintf(output, 130,
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 20 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 40 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 60 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 80 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 100 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 120 */
+                    "%%%%%%%%%%%%%%%%%%" /* 129 */
+  );
+fail_unless(rc == 0, "return code should be 0");
+
+/* 128 output segments */
+rc = curl_msnprintf(output, 129,
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 20 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 40 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 60 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 80 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 100 */
+                    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" /* 120 */
+                    "%%%%%%%%%%%%%%%%" /* 128 */
+  );
+fail_unless(rc == 128, "return code should be 128");
+
 UNITTEST_STOP