diff --git a/NEWS b/NEWS index a6314fec093..23644c5d162 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,10 @@ PHP NEWS . Fixed bug GH-20504 (Assertion failure in zend_get_property_guard when accessing properties on Reflection LazyProxy via isset()). (Arnaud) +- Date: + . Fixed bug GH-20936 (DatePeriod::__set_state() cannot handle null start). + (ndossche) + - DOM: . Fixed bug GH-21077 (Accessing Dom\Node::baseURI can throw TypeError). (ndossche) diff --git a/ext/date/php_date.c b/ext/date/php_date.c index b6aac112b6d..c06f6e7d2a7 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -5749,7 +5749,7 @@ static bool php_date_period_initialize_from_hash(php_period_obj *period_obj, con php_date_obj *date_obj; date_obj = Z_PHPDATE_P(ht_entry); - if (!date_obj->time) { + if (!date_obj->time || !period_obj->start_ce) { return 0; } @@ -5770,7 +5770,7 @@ static bool php_date_period_initialize_from_hash(php_period_obj *period_obj, con php_date_obj *date_obj; date_obj = Z_PHPDATE_P(ht_entry); - if (!date_obj->time) { + if (!date_obj->time || !period_obj->start_ce) { return 0; } diff --git a/ext/date/tests/gh20936.phpt b/ext/date/tests/gh20936.phpt new file mode 100644 index 00000000000..e6a525dd458 --- /dev/null +++ b/ext/date/tests/gh20936.phpt @@ -0,0 +1,14 @@ +--TEST-- +GH-20936 (DatePeriod::__set_state() cannot handle null start) +--FILE-- + null, 'end' => $end, 'current' => null, 'interval' => $interval, 'recurrences' => 2, 'include_start_date' => false, 'include_end_date' => true]); +} catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} +?> +--EXPECT-- +Error: Invalid serialization data for DatePeriod object