|
@@ -990,12 +990,26 @@ static char *print_value(const cJSON *item, int depth, cjbool fmt, printbuffer *
|
|
|
out = print_number(item, p);
|
|
|
break;
|
|
|
case cJSON_Raw:
|
|
|
- out = ensure(p, strlen(item->valuestring));
|
|
|
+ {
|
|
|
+ size_t raw_length = 0;
|
|
|
+ if (item->valuestring == NULL)
|
|
|
+ {
|
|
|
+ if (!p->noalloc)
|
|
|
+ {
|
|
|
+ cJSON_free(p->buffer);
|
|
|
+ }
|
|
|
+ out = NULL;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ raw_length = strlen(item->valuestring) + sizeof('\0');
|
|
|
+ out = ensure(p, raw_length);
|
|
|
if (out)
|
|
|
{
|
|
|
- strcpy(out, item->valuestring);
|
|
|
+ memcpy(out, item->valuestring, raw_length);
|
|
|
}
|
|
|
break;
|
|
|
+ }
|
|
|
case cJSON_String:
|
|
|
out = print_string(item, p);
|
|
|
break;
|