From 846441ab4b670de77298803d9647d1f043e91ceb Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 16 Sep 2016 14:03:05 +0300 Subject: [PATCH] Prevent optimization of huge functions. --- ext/opcache/Optimizer/zend_ssa.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/opcache/Optimizer/zend_ssa.c b/ext/opcache/Optimizer/zend_ssa.c index b61a8dafa7e..d4cb20e3e34 100644 --- a/ext/opcache/Optimizer/zend_ssa.c +++ b/ext/opcache/Optimizer/zend_ssa.c @@ -847,6 +847,11 @@ int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_ ALLOCA_FLAG(dfg_use_heap) ALLOCA_FLAG(var_use_heap) + if ((blocks_count * (op_array->last_var + op_array->T)) > 4 * 1024 * 1024) { + /* Don't buld SSA for very big functions */ + return FAILURE; + } + ssa->rt_constants = (build_flags & ZEND_RT_CONSTANTS); ssa_blocks = zend_arena_calloc(arena, blocks_count, sizeof(zend_ssa_block)); if (!ssa_blocks) {