mirror of
https://github.com/DaveGamble/cJSON.git
synced 2024-12-28 06:30:52 +08:00
Merge pull request #97 from DaveGamble/fix96-null-pointer-dereference
Fix potential null pointer dereference in cJSON_Utils Fixes #96
This commit is contained in:
commit
e4eadb9a81
@ -208,6 +208,11 @@ cJSON *cJSONUtils_GetPointer(cJSON *object, const char *pointer)
|
||||
static void cJSONUtils_InplaceDecodePointerString(char *string)
|
||||
{
|
||||
char *s2 = string;
|
||||
|
||||
if (string == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (; *string; s2++, string++)
|
||||
{
|
||||
*s2 = (*string != '~')
|
||||
@ -229,12 +234,19 @@ static cJSON *cJSONUtils_PatchDetach(cJSON *object, const char *path)
|
||||
|
||||
/* copy path and split it in parent and child */
|
||||
parentptr = cJSONUtils_strdup(path);
|
||||
childptr = strrchr(parentptr, '/'); /* last '/' */
|
||||
if (childptr)
|
||||
{
|
||||
/* split strings */
|
||||
*childptr++ = '\0';
|
||||
if (parentptr == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
childptr = strrchr(parentptr, '/'); /* last '/' */
|
||||
if (childptr == NULL)
|
||||
{
|
||||
free(parentptr);
|
||||
return NULL;
|
||||
}
|
||||
/* split strings */
|
||||
*childptr++ = '\0';
|
||||
|
||||
parent = cJSONUtils_GetPointer(object, parentptr);
|
||||
cJSONUtils_InplaceDecodePointerString(childptr);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user