aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Badoux <n.badoux@hotmail.com>2024-08-25 23:06:21 +0200
committerAlan Wang <wp_scut@163.com>2024-08-30 11:29:28 +0800
commit4f4d7f70c253927c4d8130771168c9fa7864d2d4 (patch)
treee709cca2592d5b3985c0f195ec759db07811c308
parentb47edc4750301a17bcc72bf20323d2f625a4ae05 (diff)
downloadcjson-4f4d7f70c253927c4d8130771168c9fa7864d2d4.tar.gz
cjson-4f4d7f70c253927c4d8130771168c9fa7864d2d4.zip
CJSON_SetValuestring: better test for overlapping string
-rw-r--r--tests/misc_tests.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/tests/misc_tests.c b/tests/misc_tests.c
index b10c0a0..e1187f8 100644
--- a/tests/misc_tests.c
+++ b/tests/misc_tests.c
@@ -473,15 +473,19 @@ static void cjson_functions_should_not_crash_with_null_pointers(void)
static void cjson_set_valuestring_should_return_null_if_strings_overlap(void)
{
- cJSON *obj, *obj_dup;
+ cJSON *obj;
char* str;
+ char* str2;
- obj = cJSON_Parse("\"fooz\"");
- obj_dup = cJSON_Duplicate(obj, 1);
+ obj = cJSON_Parse("\"foo0z\"");
- str = cJSON_SetValuestring(obj_dup, "beeez");
- cJSON_SetValuestring(obj_dup, str);
- cJSON_SetValuestring(obj_dup, ++str);
+ str = cJSON_SetValuestring(obj, "abcde");
+ str += 1;
+ /* The string passed to strcpy overlap which is not allowed.*/
+ str2 = cJSON_SetValuestring(obj, str);
+ /* If it overlaps, the string will be messed up.*/
+ TEST_ASSERT_TRUE(strcmp(str, "bcde") == 0);
+ TEST_ASSERT_NULL(str2);
}
static void *CJSON_CDECL failing_realloc(void *pointer, size_t size)