From b47edc4750301a17bcc72bf20323d2f625a4ae05 Mon Sep 17 00:00:00 2001 From: Nicolas Badoux Date: Sun, 25 Aug 2024 22:32:02 +0200 Subject: [PATCH] CJSON_SetValuestring: add test for overlapping string --- tests/misc_tests.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/misc_tests.c b/tests/misc_tests.c index b9c59e7..b10c0a0 100644 --- a/tests/misc_tests.c +++ b/tests/misc_tests.c @@ -471,6 +471,19 @@ static void cjson_functions_should_not_crash_with_null_pointers(void) cJSON_Delete(item); } +static void cjson_set_valuestring_should_return_null_if_strings_overlap(void) +{ + cJSON *obj, *obj_dup; + char* str; + + obj = cJSON_Parse("\"fooz\""); + obj_dup = cJSON_Duplicate(obj, 1); + + str = cJSON_SetValuestring(obj_dup, "beeez"); + cJSON_SetValuestring(obj_dup, str); + cJSON_SetValuestring(obj_dup, ++str); +} + static void *CJSON_CDECL failing_realloc(void *pointer, size_t size) { (void)size; @@ -765,6 +778,7 @@ int CJSON_CDECL main(void) RUN_TEST(cjson_replace_item_via_pointer_should_replace_items); RUN_TEST(cjson_replace_item_in_object_should_preserve_name); RUN_TEST(cjson_functions_should_not_crash_with_null_pointers); + RUN_TEST(cjson_set_valuestring_should_return_null_if_strings_overlap); RUN_TEST(ensure_should_fail_on_failed_realloc); RUN_TEST(skip_utf8_bom_should_skip_bom); RUN_TEST(skip_utf8_bom_should_not_skip_bom_if_not_at_beginning);