Переглянути джерело

Merge pull request #97 from DaveGamble/fix96-null-pointer-dereference

Fix potential null pointer dereference in cJSON_Utils
Fixes #96
Max Bruckner 8 роки тому
батько
коміт
e4eadb9a81
1 змінених файлів з 15 додано та 3 видалено
  1. 15 3
      cJSON_Utils.c

+ 15 - 3
cJSON_Utils.c

@@ -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);
+    if (parentptr == NULL) {
+        return NULL;
+    }
+
     childptr = strrchr(parentptr, '/'); /* last '/' */
-    if (childptr)
+    if (childptr == NULL)
     {
-        /* split strings */
-        *childptr++ = '\0';
+        free(parentptr);
+        return NULL;
     }
+    /* split strings */
+    *childptr++ = '\0';
+
     parent = cJSONUtils_GetPointer(object, parentptr);
     cJSONUtils_InplaceDecodePointerString(childptr);