From 19396a49a60a1937bc8cbf30ab5579f089ee2f0f Mon Sep 17 00:00:00 2001 From: Alanscut Date: Sun, 28 Apr 2024 18:09:25 +0800 Subject: [PATCH] update comments and add tests for cJSON_SetValuestring --- cJSON.c | 3 ++- tests/misc_tests.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cJSON.c b/cJSON.c index 8903e4c..4f5b38d 100644 --- a/cJSON.c +++ b/cJSON.c @@ -397,6 +397,7 @@ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number) return object->valuedouble = number; } +/* Note: when passing a NULL valuestring, cJSON_SetValuestring treats this as an error and return NULL */ CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring) { char *copy = NULL; @@ -405,7 +406,7 @@ CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring) { return NULL; } - /* return NULL if the object is corrupted */ + /* return NULL if the object is corrupted or valuestring is NULL */ if (object->valuestring == NULL || valuestring == NULL) { return NULL; diff --git a/tests/misc_tests.c b/tests/misc_tests.c index 48fb6ec..ba3e003 100644 --- a/tests/misc_tests.c +++ b/tests/misc_tests.c @@ -444,6 +444,7 @@ static void cjson_functions_should_not_crash_with_null_pointers(void) TEST_ASSERT_FALSE(cJSON_Compare(NULL, item, false)); TEST_ASSERT_NULL(cJSON_SetValuestring(NULL, "test")); TEST_ASSERT_NULL(cJSON_SetValuestring(corruptedString, "test")); + TEST_ASSERT_NULL(cJSON_SetValuestring(item, NULL)); cJSON_Minify(NULL); /* skipped because it is only used via a macro that checks for NULL */ /* cJSON_SetNumberHelper(NULL, 0); */