summaryrefslogtreecommitdiff
path: root/sapi/phpdbg/phpdbg_prompt.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-06-21 16:52:08 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-06-21 17:01:25 +0200
commit152ccfb08dd766cdb76583b061dcc2c8a73a7255 (patch)
treeb392bfcf8d2ed898468c8e50fbc80eb5c52503a7 /sapi/phpdbg/phpdbg_prompt.c
parenta7bcfee9c982bd301ad720d880f35ed949c701a0 (diff)
downloadphp-git-152ccfb08dd766cdb76583b061dcc2c8a73a7255.tar.gz
Fix stack leak in phpdbg
Diffstat (limited to 'sapi/phpdbg/phpdbg_prompt.c')
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index e1bfeb45da..248391b188 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -1632,7 +1632,14 @@ int phpdbg_interactive(zend_bool allow_async_unsafe, char *input) /* {{{ */
sigio_watcher_start();
}
#endif
- switch (ret = phpdbg_stack_execute(&stack, allow_async_unsafe)) {
+ zend_try {
+ ret = phpdbg_stack_execute(&stack, allow_async_unsafe);
+ } zend_catch {
+ phpdbg_stack_free(&stack);
+ zend_bailout();
+ } zend_end_try();
+
+ switch (ret) {
case FAILURE:
if (!(PHPDBG_G(flags) & PHPDBG_IS_STOPPING)) {
if (!allow_async_unsafe || phpdbg_call_register(&stack) == FAILURE) {