From 3a7d96f04b10a04759d5914279dfd651cbdc206a Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Wed, 19 Feb 2020 14:27:36 +0400 Subject: [PATCH] [apr] Fix potential dereference of a null pointer when apr_pool_create_ex() is called without both an allocator and a parent while global_pool is uninitialized. --- libs/apr/memory/unix/apr_pools.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libs/apr/memory/unix/apr_pools.c b/libs/apr/memory/unix/apr_pools.c index c412a4aef0..7e37a5d0a0 100644 --- a/libs/apr/memory/unix/apr_pools.c +++ b/libs/apr/memory/unix/apr_pools.c @@ -821,8 +821,17 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, if (!abort_fn && parent) abort_fn = parent->abort_fn; - if (allocator == NULL) + if (allocator == NULL) { + if (!parent) { + /* There is no way to continue without an allocator when no parent */ + if (abort_fn) + abort_fn(APR_EINVAL); + + return APR_EINVAL; + } + allocator = parent->allocator; + } if ((node = allocator_alloc(allocator, MIN_ALLOC - APR_MEMNODE_T_SIZE)) == NULL) {