1
0
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:
Derick Rethans
2023-08-09 15:39:31 +01:00
2 changed files with 34 additions and 0 deletions

View File

@@ -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);

View 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