From ac8a3149133fd3420770baf37190e47f5f7a46c7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 8 Oct 2016 20:47:44 +0200 Subject: [PATCH] test557: verify printf() with 128 and 129 arguments --- tests/libtest/lib557.c | 104 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/tests/libtest/lib557.c b/tests/libtest/lib557.c index 5bdb8abe0..683ca089f 100644 --- a/tests/libtest/lib557.c +++ b/tests/libtest/lib557.c @@ -1422,11 +1422,115 @@ static int test_string_formatting(void) return errors; } +static int test_weird_arguments(void) +{ + int errors = 0; + char buf[256]; + int rc; + + /* MAX_PARAMETERS is 128, try exact 128! */ + rc = curl_msnprintf(buf, sizeof(buf), + "%d%d%d%d%d%d%d%d%d%d" /* 10 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 1 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 2 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 3 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 4 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 5 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 6 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 7 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 8 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 9 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 10 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 11 */ + "%d%d%d%d%d%d%d%d" /* 8 */ + , + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 1 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 2 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 3 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 4 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 5 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 6 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 7 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 8 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 9 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 10 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */ + 0, 1, 2, 3, 4, 5, 6, 7); /* 8 */ + + if(rc != 128) { + printf("curl_mprintf() returned %d and not 128!\n", rc); + errors++; + } + + errors += string_check(buf, + "0123456789" /* 10 */ + "0123456789" /* 10 1 */ + "0123456789" /* 10 2 */ + "0123456789" /* 10 3 */ + "0123456789" /* 10 4 */ + "0123456789" /* 10 5 */ + "0123456789" /* 10 6 */ + "0123456789" /* 10 7 */ + "0123456789" /* 10 8 */ + "0123456789" /* 10 9 */ + "0123456789" /* 10 10*/ + "0123456789" /* 10 11 */ + "01234567" /* 8 */ + ); + + /* MAX_PARAMETERS is 128, try more! */ + buf[0] = 0; + rc = curl_msnprintf(buf, sizeof(buf), + "%d%d%d%d%d%d%d%d%d%d" /* 10 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 1 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 2 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 3 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 4 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 5 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 6 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 7 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 8 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 9 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 10 */ + "%d%d%d%d%d%d%d%d%d%d" /* 10 11 */ + "%d%d%d%d%d%d%d%d%d" /* 9 */ + , + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 1 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 2 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 3 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 4 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 5 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 6 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 7 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 8 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 9 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 10 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */ + 0, 1, 2, 3, 4, 5, 6, 7, 8); /* 9 */ + + if(rc != -1) { + printf("curl_mprintf() returned %d and not -1!\n", rc); + errors++; + } + + errors += string_check(buf, ""); + + if(errors) + printf("Some curl_mprintf() weird arguments tests failed!\n"); + + return errors; +} + + int test(char *URL) { int errors = 0; (void)URL; /* not used */ + errors += test_weird_arguments(); + errors += test_unsigned_short_formatting(); errors += test_signed_short_formatting();