CJSON_SetValuestring: better test for overlapping string

This commit is contained in:
Nicolas Badoux 2024-08-25 23:06:21 +02:00 committed by Alan Wang
parent b47edc4750
commit 4f4d7f70c2

View File

@ -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) static void cjson_set_valuestring_should_return_null_if_strings_overlap(void)
{ {
cJSON *obj, *obj_dup; cJSON *obj;
char* str; char* str;
char* str2;
obj = cJSON_Parse("\"fooz\""); obj = cJSON_Parse("\"foo0z\"");
obj_dup = cJSON_Duplicate(obj, 1);
str = cJSON_SetValuestring(obj_dup, "beeez"); str = cJSON_SetValuestring(obj, "abcde");
cJSON_SetValuestring(obj_dup, str); str += 1;
cJSON_SetValuestring(obj_dup, ++str); /* 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) static void *CJSON_CDECL failing_realloc(void *pointer, size_t size)