فهرست منبع

fix null pointer dereferences found by coverity

Max Bruckner 8 سال پیش
والد
کامیت
9ed906758e
2فایلهای تغییر یافته به همراه22 افزوده شده و 7 حذف شده
  1. 11 7
      cJSON.c
  2. 11 0
      cJSON_Utils.c

+ 11 - 7
cJSON.c

@@ -1789,14 +1789,18 @@ static cJSON *create_reference(const cJSON *item)
 }
 
 /* Add item to array/object. */
-void   cJSON_AddItemToArray(cJSON *array, cJSON *item)
+void cJSON_AddItemToArray(cJSON *array, cJSON *item)
 {
-    cJSON *c = array->child;
-    if (!item)
+    cJSON *child = NULL;
+
+    if ((item == NULL) || (array == NULL))
     {
         return;
     }
-    if (!c)
+
+    child = array->child;
+
+    if (child == NULL)
     {
         /* list is empty, start new one */
         array->child = item;
@@ -1804,11 +1808,11 @@ void   cJSON_AddItemToArray(cJSON *array, cJSON *item)
     else
     {
         /* append to the end */
-        while (c->next)
+        while (child->next)
         {
-            c = c->next;
+            child = child->next;
         }
-        suffix_object(c, item);
+        suffix_object(child, item);
     }
 }
 

+ 11 - 0
cJSON_Utils.c

@@ -494,6 +494,12 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
 int cJSONUtils_ApplyPatches(cJSON *object, cJSON *patches)
 {
     int err = 0;
+
+    if (patches == NULL)
+    {
+        return 1;
+    }
+
     if ((patches->type & 0xFF) != cJSON_Array)
     {
         /* malformed patches. */
@@ -544,6 +550,11 @@ void cJSONUtils_AddPatchToArray(cJSON *array, const char *op, const char *path,
 
 static void cJSONUtils_CompareToPatch(cJSON *patches, const unsigned char *path, cJSON *from, cJSON *to)
 {
+    if ((from == NULL) || (to == NULL))
+    {
+        return;
+    }
+
     if ((from->type & 0xFF) != (to->type & 0xFF))
     {
         cJSONUtils_GeneratePatch(patches, (const unsigned char*)"replace", path, 0, to);