Fixed overflow if ngx_slab_alloc() is called with very big "size" argument.
diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c index 782792d..ae9d6f3 100644 --- a/src/core/ngx_slab.c +++ b/src/core/ngx_slab.c
@@ -162,8 +162,8 @@ ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0, "slab alloc: %uz", size); - page = ngx_slab_alloc_pages(pool, (size + ngx_pagesize - 1) - >> ngx_pagesize_shift); + page = ngx_slab_alloc_pages(pool, (size >> ngx_pagesize_shift) + + ((size % ngx_pagesize) ? 1 : 0)); if (page) { p = (page - pool->pages) << ngx_pagesize_shift; p += (uintptr_t) pool->start;