]> git.feebdaed.xyz Git - 0xmirror/cJSON.git/commitdiff
CJSON_SetValuestring: add test for overlapping string
authorNicolas Badoux <n.badoux@hotmail.com>
Sun, 25 Aug 2024 20:32:02 +0000 (22:32 +0200)
committerAlan Wang <wp_scut@163.com>
Fri, 30 Aug 2024 03:29:28 +0000 (11:29 +0800)
tests/misc_tests.c

index b9c59e71a58f9a0919ea80bfc92e64e1740562e8..b10c0a05581c82a679108ee6abfc529206110dd0 100644 (file)
@@ -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);