diff options
Diffstat (limited to 'libc/upstream-dlmalloc/malloc.c')
-rw-r--r-- | libc/upstream-dlmalloc/malloc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libc/upstream-dlmalloc/malloc.c b/libc/upstream-dlmalloc/malloc.c index 3ef9b61a6..4362f49ff 100644 --- a/libc/upstream-dlmalloc/malloc.c +++ b/libc/upstream-dlmalloc/malloc.c @@ -5317,12 +5317,19 @@ void* dlvalloc(size_t bytes) { return dlmemalign(pagesz, bytes); } +/* BEGIN android-changed: added overflow check */ void* dlpvalloc(size_t bytes) { size_t pagesz; + size_t size; ensure_initialization(); pagesz = mparams.page_size; - return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); + size = (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE); + if (size < bytes) { + return NULL; + } + return dlmemalign(pagesz, size); } +/* END android-change */ void** dlindependent_calloc(size_t n_elements, size_t elem_size, void* chunks[]) { |