From 2f6317c4835b1256679fa0a3127e9301fed66b69 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Sun, 5 Oct 2014 13:29:56 +0200 Subject: [PATCH] Fix infinite recursion issues (segfaults) --- phpdbg_prompt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c index 0abb75ae85..9341f5aafb 100644 --- a/phpdbg_prompt.c +++ b/phpdbg_prompt.c @@ -1323,7 +1323,12 @@ next: PHPDBG_G(last_line) = execute_data->opline->lineno; + /* stupid hack to make zend_do_fcall_common_helper return ZEND_VM_ENTER() instead of recursively calling zend_execute() and eventually segfaulting */ + if ((execute_data->opline->opcode == ZEND_DO_FCALL_BY_NAME || execute_data->opline->opcode == ZEND_DO_FCALL) && execute_data->function_state.function->type == ZEND_USER_FUNCTION) { + zend_execute_ex = execute_ex; + } PHPDBG_G(vmret) = execute_data->opline->handler(execute_data TSRMLS_CC); + zend_execute_ex = phpdbg_execute_ex; if (PHPDBG_G(vmret) > 0) { switch (PHPDBG_G(vmret)) { -- 2.40.0