From: Daniel Stenberg Date: Mon, 9 Sep 2024 11:16:13 +0000 (+0200) Subject: unit1398: test maximum input parameters/output segments X-Git-Tag: curl-8_10_0~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81300c30e2ecf9906807abcedb5b84169142123f;p=thirdparty%2Fcurl.git unit1398: test maximum input parameters/output segments ...for the mprintf() code Closes #14833 --- diff --git a/tests/unit/unit1398.c b/tests/unit/unit1398.c index 220665bc52..696eb023bd 100644 --- a/tests/unit/unit1398.c +++ b/tests/unit/unit1398.c @@ -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