Skip to content

Commit

Permalink
Merge branch 'PHP-8.3' into PHP-8.4
Browse files Browse the repository at this point in the history
* PHP-8.3:
  Fix GH-16184: UBSan address overflowed in ext/pcre/php_pcre.c
  • Loading branch information
nielsdos committed Oct 3, 2024
2 parents ba0834b + ddc7a6b commit 5839fc5
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
4 changes: 4 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ PHP NEWS
. Fixed bug GH-16009 (Segmentation fault with frameless functions and
undefined CVs). (nielsdos)

- PCRE:
. Fixed bug GH-16184 (UBSan address overflowed in ext/pcre/php_pcre.c).
(nielsdos)

- PHPDBG:
. Fixed bug GH-16181 (phpdbg: exit in exception handler reports fatal error).
(cmb)
Expand Down
6 changes: 4 additions & 2 deletions ext/pcre/php_pcre.c
Original file line number Diff line number Diff line change
Expand Up @@ -1754,8 +1754,10 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su
}
if (preg_get_backref(&walk, &backref)) {
if (backref < count) {
match_len = offsets[(backref<<1)+1] - offsets[backref<<1];
walkbuf = zend_mempcpy(walkbuf, subject + offsets[backref << 1], match_len);
if (offsets[backref<<1] < SIZE_MAX) {
match_len = offsets[(backref<<1)+1] - offsets[backref<<1];
walkbuf = zend_mempcpy(walkbuf, subject + offsets[backref << 1], match_len);
}
}
continue;
}
Expand Down
13 changes: 13 additions & 0 deletions ext/pcre/tests/gh16184.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
--TEST--
GH-16184 (UBSan address overflowed in ext/pcre/php_pcre.c)
--CREDITS--
YuanchengJiang
--FILE--
<?php

$string = 'This is a string. It contains numbers (0*9) as well as parentheses and some other things!';
echo preg_replace(array('/\b\w{1}s/', '/(\d{1})*(\d{1})/', '/[\(!\)]/'), array('test', '$1 to $2', '*'), $string), "\n";

?>
--EXPECT--
This test a string. It contains numbers * to 0* to 9* test well test parentheses and some other things*

0 comments on commit 5839fc5

Please sign in to comment.