diff options
author | Joe Watkins <krakjoe@php.net> | 2019-03-26 23:05:06 +0100 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2019-03-26 23:05:06 +0100 |
commit | 7df8e4fc0abc105cd5d7b933499bdd275459f7ee (patch) | |
tree | 3477be82d082fcf013f03d4accc02ca54a0ebe89 /sapi | |
parent | 72a2ab39ba977d542fdc33109dead3a87ea9f2ab (diff) | |
download | php-git-7df8e4fc0abc105cd5d7b933499bdd275459f7ee.tar.gz |
Fix #77800 phpdbg segfaults on conditional breakpoints
Diffstat (limited to 'sapi')
-rw-r--r-- | sapi/phpdbg/phpdbg_bp.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c index 27bf532dcc..56b814a9df 100644 --- a/sapi/phpdbg/phpdbg_bp.c +++ b/sapi/phpdbg/phpdbg_bp.c @@ -232,7 +232,7 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */ } ZEND_HASH_FOREACH_END(); } - if (!(*str)[0]) { + if ((*str) && !(*str)[0]) { *str = NULL; } } /* }}} */ @@ -813,6 +813,21 @@ static inline void phpdbg_create_conditional_break(phpdbg_breakcond_t *brake, co uint32_t cops = CG(compiler_options); zval pv; + switch (param->type) { + case STR_PARAM: + case NUMERIC_FUNCTION_PARAM: + case METHOD_PARAM: + case NUMERIC_METHOD_PARAM: + case FILE_PARAM: + case ADDR_PARAM: + /* do nothing */ + break; + + default: + phpdbg_error("eval", "type=\"invalidparameter\"", "Invalid parameter type for conditional breakpoint"); + return; + } + PHPDBG_BREAK_INIT(new_break, PHPDBG_BREAK_COND); new_break.hash = hash; |