瀏覽代碼

-avoid calling memmove with NULL argument

Christian Grothoff 9 年之前
父節點
當前提交
2b2b1655a6
共有 1 個文件被更改,包括 10 次插入7 次删除
  1. 10 7
      src/microhttpd/memorypool.c

+ 10 - 7
src/microhttpd/memorypool.c

@@ -241,7 +241,8 @@ MHD_pool_reallocate (struct MemoryPool *pool,
     {
       /* fits */
       ret = &pool->memory[pool->pos];
-      memmove (ret, old, old_size);
+      if (0 != old_size)
+        memmove (ret, old, old_size);
       pool->pos += asize;
       return ret;
     }
@@ -273,17 +274,19 @@ MHD_pool_reset (struct MemoryPool *pool,
     {
       if (keep != pool->memory)
         {
-          memmove (pool->memory,
-                   keep,
-                   copy_bytes);
+          if (0 != copy_bytes)
+            memmove (pool->memory,
+                     keep,
+                     copy_bytes);
           keep = pool->memory;
         }
     }
   pool->end = pool->size;
   /* technically not needed, but safer to zero out */
-  memset (&pool->memory[copy_bytes],
-	  0,
-	  pool->size - copy_bytes);
+  if (pool->size > copy_bytes)
+    memset (&pool->memory[copy_bytes],
+            0,
+            pool->size - copy_bytes);
   if (NULL != keep)
     pool->pos = ROUND_TO_ALIGN (new_size);
   return keep;