From 5d6fa331418d49f1bd488553fd1cfa9ab023fabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Thu, 14 May 2020 12:32:30 +0200 Subject: Fix CVE-2020-12762. This commit is a squashed backport of the following commits on the master branch: * 099016b7e8d70a6d5dd814e788bba08d33d48426 * 77d935b7ae7871a1940cd827e850e6063044ec45 * d07b91014986900a3a75f306d302e13e005e9d67 * 519dfe1591d85432986f9762d41d1a883198c157 * a59d5acfab4485d5133114df61785b1fc633e0c6 * 26f080997d41cfdb17beab65e90c82217d0ac43b --- tests/test4.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests/test4.c') diff --git a/tests/test4.c b/tests/test4.c index bd964ec..288cec1 100644 --- a/tests/test4.c +++ b/tests/test4.c @@ -3,12 +3,15 @@ */ #include "config.h" +#include #include +#include #include #include "json_inttypes.h" #include "json_object.h" #include "json_tokener.h" +#include "snprintf_compat.h" void print_hex(const char *s) { @@ -24,6 +27,29 @@ void print_hex(const char *s) putchar('\n'); } +static void test_lot_of_adds(void); +static void test_lot_of_adds() +{ + int ii; + char key[50]; + json_object *jobj = json_object_new_object(); + assert(jobj != NULL); + for (ii = 0; ii < 500; ii++) + { + snprintf(key, sizeof(key), "k%d", ii); + json_object *iobj = json_object_new_int(ii); + assert(iobj != NULL); + if (json_object_object_add(jobj, key, iobj)) + { + fprintf(stderr, "FAILED to add object #%d\n", ii); + abort(); + } + } + printf("%s\n", json_object_to_json_string(jobj)); + assert(json_object_object_length(jobj) == 500); + json_object_put(jobj); +} + int main(void) { const char *input = "\"\\ud840\\udd26,\\ud840\\udd27,\\ud800\\udd26,\\ud800\\udd27\""; @@ -52,5 +78,8 @@ int main(void) retval = 1; } json_object_put(parse_result); + + test_lot_of_adds(); + return retval; } -- cgit v1.2.1