mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix GH-18901: integer overflow mb_split
This commit is contained in:
commit
b727821c79
2 changed files with 55 additions and 1 deletions
|
@ -1178,7 +1178,7 @@ PHP_FUNCTION(mb_split)
|
||||||
size_t string_len;
|
size_t string_len;
|
||||||
|
|
||||||
int err;
|
int err;
|
||||||
zend_long count = -1;
|
zend_ulong count = -1; /* unsigned, it's a limit and we want to prevent signed overflow */
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|l", &arg_pattern, &arg_pattern_len, &string, &string_len, &count) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|l", &arg_pattern, &arg_pattern_len, &string, &string_len, &count) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
|
|
54
ext/mbstring/tests/gh18901.phpt
Normal file
54
ext/mbstring/tests/gh18901.phpt
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
--TEST--
|
||||||
|
GH-18901 (integer overflow mb_split)
|
||||||
|
--EXTENSIONS--
|
||||||
|
mbstring
|
||||||
|
--SKIPIF--
|
||||||
|
<?php
|
||||||
|
if (!function_exists('mb_split')) die('skip mb_split() not available');
|
||||||
|
?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$vals = [PHP_INT_MIN, PHP_INT_MAX, -1, 0, 1];
|
||||||
|
foreach ($vals as $val) {
|
||||||
|
var_dump(mb_split('\d', '123', $val));
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
array(4) {
|
||||||
|
[0]=>
|
||||||
|
string(0) ""
|
||||||
|
[1]=>
|
||||||
|
string(0) ""
|
||||||
|
[2]=>
|
||||||
|
string(0) ""
|
||||||
|
[3]=>
|
||||||
|
string(0) ""
|
||||||
|
}
|
||||||
|
array(4) {
|
||||||
|
[0]=>
|
||||||
|
string(0) ""
|
||||||
|
[1]=>
|
||||||
|
string(0) ""
|
||||||
|
[2]=>
|
||||||
|
string(0) ""
|
||||||
|
[3]=>
|
||||||
|
string(0) ""
|
||||||
|
}
|
||||||
|
array(4) {
|
||||||
|
[0]=>
|
||||||
|
string(0) ""
|
||||||
|
[1]=>
|
||||||
|
string(0) ""
|
||||||
|
[2]=>
|
||||||
|
string(0) ""
|
||||||
|
[3]=>
|
||||||
|
string(0) ""
|
||||||
|
}
|
||||||
|
array(1) {
|
||||||
|
[0]=>
|
||||||
|
string(3) "123"
|
||||||
|
}
|
||||||
|
array(1) {
|
||||||
|
[0]=>
|
||||||
|
string(3) "123"
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue