summaryrefslogtreecommitdiff
path: root/sapi
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2019-03-26 23:05:06 +0100
committerJoe Watkins <krakjoe@php.net>2019-03-26 23:05:06 +0100
commit7df8e4fc0abc105cd5d7b933499bdd275459f7ee (patch)
tree3477be82d082fcf013f03d4accc02ca54a0ebe89 /sapi
parent72a2ab39ba977d542fdc33109dead3a87ea9f2ab (diff)
downloadphp-git-7df8e4fc0abc105cd5d7b933499bdd275459f7ee.tar.gz
Fix #77800 phpdbg segfaults on conditional breakpoints
Diffstat (limited to 'sapi')
-rw-r--r--sapi/phpdbg/phpdbg_bp.c17
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;