diff options
author | Nicolas Badoux <n.badoux@hotmail.com> | 2024-08-25 23:06:21 +0200 |
---|---|---|
committer | Alan Wang <wp_scut@163.com> | 2024-08-30 11:29:28 +0800 |
commit | 4f4d7f70c253927c4d8130771168c9fa7864d2d4 (patch) | |
tree | e709cca2592d5b3985c0f195ec759db07811c308 | |
parent | b47edc4750301a17bcc72bf20323d2f625a4ae05 (diff) | |
download | cjson-4f4d7f70c253927c4d8130771168c9fa7864d2d4.tar.gz cjson-4f4d7f70c253927c4d8130771168c9fa7864d2d4.zip |
CJSON_SetValuestring: better test for overlapping string
-rw-r--r-- | tests/misc_tests.c | 16 |
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) |