diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 5852bb2ca66..69f990ca51c 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2814,6 +2814,10 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat tzi = php_date_parse_tzfile(Z_STRVAL_PP(z_timezone), DATE_TIMEZONEDB TSRMLS_CC); + if (tzi == NULL) { + return 0; + } + ALLOC_INIT_ZVAL(tmp_obj); tzobj = zend_object_store_get_object(php_date_instantiate(date_ce_timezone, tmp_obj TSRMLS_CC) TSRMLS_CC); tzobj->type = TIMELIB_ZONETYPE_ID; diff --git a/ext/date/tests/bug66721.phpt b/ext/date/tests/bug66721.phpt new file mode 100644 index 00000000000..48067124375 --- /dev/null +++ b/ext/date/tests/bug66721.phpt @@ -0,0 +1,11 @@ +--TEST-- +Test for bug #66721: __wakeup of DateTime segfaults when invalid object data is supplied +--CREDITS-- +Boro Sitnikovski +--FILE-- + +--EXPECTF-- +Fatal error: Invalid serialization data for DateTime object in %s on line %d