mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3: Fix GH-18421: Integer overflow with large numbers in LimitIterator
This commit is contained in:
4
NEWS
4
NEWS
@@ -7,6 +7,10 @@ PHP NEWS
|
||||
inaccurate sunrise and sunset times, but other calculated times are
|
||||
correct) (JiriJozif).
|
||||
|
||||
- SPL:
|
||||
. Fixed bug GH-18421 (Integer overflow with large numbers in LimitIterator).
|
||||
(nielsdos)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug GH-17403 (Potential deadlock when putenv fails). (nielsdos)
|
||||
|
||||
|
||||
@@ -2143,7 +2143,7 @@ static inline void spl_limit_it_seek(spl_dual_it_object *intern, zend_long pos)
|
||||
zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0, "Cannot seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset);
|
||||
return;
|
||||
}
|
||||
if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) {
|
||||
if (pos - intern->u.limit.offset >= intern->u.limit.count && intern->u.limit.count != -1) {
|
||||
zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0, "Cannot seek to " ZEND_LONG_FMT " which is behind offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.limit.count);
|
||||
return;
|
||||
}
|
||||
|
||||
17
ext/spl/tests/gh18421.phpt
Normal file
17
ext/spl/tests/gh18421.phpt
Normal file
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
GH-18421 (Integer overflow with large numbers in LimitIterator)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$a = array('zero' => 0, 'one' => 1, 'two' => 2, 'three' => 3, 'four' => 4, 'five' => 5);
|
||||
try {
|
||||
foreach (new LimitIterator(new ArrayIterator($a), PHP_INT_MAX, PHP_INT_MAX) as $k => $v)
|
||||
{
|
||||
}
|
||||
} catch (OutOfBoundsException $e) {
|
||||
echo $e->getMessage(), "\n";
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Seek position %d is out of range
|
||||
Reference in New Issue
Block a user