Просмотр исходного кода

multi_heap: ensure that malloc(0) return NULL pointer in any poisoning configuration

Felipe Neves 5 лет назад
Родитель
Сommit
48e78e6e07
2 измененных файлов с 10 добавлено и 0 удалено
  1. 4 0
      components/heap/multi_heap_poisoning.c
  2. 6 0
      components/heap/test/test_malloc.c

+ 4 - 0
components/heap/multi_heap_poisoning.c

@@ -184,6 +184,10 @@ static bool verify_fill_pattern(void *data, size_t size, bool print_errors, bool
 
 void *multi_heap_malloc(multi_heap_handle_t heap, size_t size)
 {
+    if (!size) {
+        return NULL;
+    }
+
     if(size > SIZE_MAX - POISON_OVERHEAD) {
         return NULL;
     }

+ 6 - 0
components/heap/test/test_malloc.c

@@ -132,3 +132,9 @@ TEST_CASE("unreasonable allocs should all fail", "[heap]")
     TEST_ASSERT_NULL(test_malloc_wrapper(xPortGetFreeHeapSize() - 1));
 }
 
+TEST_CASE("malloc(0) should return a NULL pointer", "[heap]")
+{
+    void *p;
+    p = malloc(0);
+    TEST_ASSERT(p == NULL);
+}