Skip to content

Commit 64d73d6

Browse files
committed
Fix GH-15208: Segfault with breakpoint map and phpdbg_clear()
It crashes because it's gonna try accessing the breakpoint which was cleared by user code in `phpdbg_clear();`. Not all breakpoint data was properly cleaned.
1 parent 18674e3 commit 64d73d6

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

sapi/phpdbg/phpdbg.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ PHP_FUNCTION(phpdbg_clear)
369369
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE_OPLINE]);
370370
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE]);
371371
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_METHOD]);
372+
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_MAP]);
372373
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_COND]);
373374
} /* }}} */
374375

sapi/phpdbg/tests/gh15208.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
GH-15208 (Segfault with breakpoint map and phpdbg_clear())
3+
--PHPDBG--
4+
r
5+
q
6+
--FILE--
7+
<?php
8+
phpdbg_break_method("foo", "bar");
9+
phpdbg_clear();
10+
?>
11+
--EXPECTF--
12+
[Successful compilation of %s]
13+
prompt> [Breakpoint #0 added at foo::bar]
14+
[Script ended normally]
15+
prompt>

0 commit comments

Comments
 (0)