Explorar o código

ensure: Validate buffer offset

Max Bruckner %!s(int64=8) %!d(string=hai) anos
pai
achega
1934059554
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      cJSON.c

+ 6 - 0
cJSON.c

@@ -253,6 +253,12 @@ static unsigned char* ensure(printbuffer * const p, size_t needed, const interna
         return NULL;
     }
 
+    if ((p->length > 0) && (p->offset >= p->length))
+    {
+        /* make sure that offset is valid */
+        return NULL;
+    }
+
     if (needed > INT_MAX)
     {
         /* sizes bigger than INT_MAX are currently not supported */