summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--sapi/phpdbg/phpdbg_bp.c17
2 files changed, 18 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index bd2a72f301..24e9ec2182 100644
--- a/NEWS
+++ b/NEWS
@@ -86,6 +86,8 @@ PHP NEWS
- phpdbg:
. Fixed bug #76596 (phpdbg support for display_errors=stderr). (kabel)
. Fixed bug #76801 (too many open files). (alekitto)
+ . Fixed bug #77800 (phpdbg segfaults on listing some conditional breakpoints).
+ (krakjoe)
- Sockets:
. Fixed bug #67619 (Validate length on socket_write). (thiagooak)
diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c
index b56c842dcf..a7253250d6 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;