mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Merge branch 'PHP-8.2'
This commit is contained in:
@@ -4956,6 +4956,12 @@ PHP_METHOD(DatePeriod, __construct)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
} else {
|
||||
/* check initialisation */
|
||||
DATE_CHECK_INITIALIZED(Z_PHPDATE_P(start)->time, DateTimeInterface);
|
||||
if (end) {
|
||||
DATE_CHECK_INITIALIZED(Z_PHPDATE_P(end)->time, DateTimeInterface);
|
||||
}
|
||||
|
||||
/* init */
|
||||
php_interval_obj *intobj = Z_PHPINTERVAL_P(interval);
|
||||
|
||||
|
||||
28
ext/date/tests/bug-gh11416.phpt
Normal file
28
ext/date/tests/bug-gh11416.phpt
Normal file
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug GH-11416: Crash with DatePeriod when uninitialised objects are passed in
|
||||
--INI--
|
||||
date.timezone=UTC
|
||||
--FILE--
|
||||
<?php
|
||||
$now = new DateTimeImmutable();
|
||||
|
||||
$date = (new ReflectionClass(DateTime::class))->newInstanceWithoutConstructor();
|
||||
try {
|
||||
new DatePeriod($date, new DateInterval('P1D'), 2);
|
||||
} catch (Error $e) {
|
||||
echo get_class($e), ': ', $e->getMessage(), "\n";
|
||||
}
|
||||
|
||||
$date = (new ReflectionClass(DateTime::class))->newInstanceWithoutConstructor();
|
||||
try {
|
||||
new DatePeriod($now, new DateInterval('P1D'), $date);
|
||||
} catch (Error $e) {
|
||||
echo get_class($e), ': ', $e->getMessage(), "\n";
|
||||
}
|
||||
|
||||
echo "OK\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
Error: The DateTimeInterface object has not been correctly initialized by its constructor
|
||||
Error: The DateTimeInterface object has not been correctly initialized by its constructor
|
||||
OK
|
||||
Reference in New Issue
Block a user