[COMMIT osv master] mempool: fix reallocarray to properly handle overflow

5 views
Skip to first unread message

Commit Bot

unread,
May 5, 2020, 10:11:31 AM5/5/20
to osv...@googlegroups.com, Waldemar Kozaczuk
From: Waldemar Kozaczuk <jwkoz...@gmail.com>
Committer: Waldemar Kozaczuk <jwkoz...@gmail.com>
Branch: master

mempool: fix reallocarray to properly handle overflow

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>

---
diff --git a/core/mempool.cc b/core/mempool.cc
--- a/core/mempool.cc
+++ b/core/mempool.cc
@@ -2014,9 +2014,14 @@ void* realloc(void* obj, size_t size)
return buf;
}

-extern "C" void *reallocarray(void *ptr, size_t nmemb, size_t size)
+extern "C" void *reallocarray(void *ptr, size_t nmemb, size_t elem_size)
{
- return realloc(ptr, nmemb * size);
+ size_t bytes;
+ if (__builtin_mul_overflow(nmemb, elem_size, &bytes)) {
+ errno = ENOMEM;
+ return 0;
+ }
+ return realloc(ptr, nmemb * elem_size);
}

size_t malloc_usable_size(void* obj)
Reply all
Reply to author
Forward
0 new messages