@@ -2554,13 +2554,15 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
25542554 case TIMELIB_ZONETYPE_OFFSET :
25552555 case TIMELIB_ZONETYPE_ABBR : {
25562556 char * tmp = emalloc (Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 2 );
2557+ int ret ;
25572558 snprintf (tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 2 , "%s %s" , Z_STRVAL_PP (z_date ), Z_STRVAL_PP (z_timezone ));
2558- php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 0 TSRMLS_CC );
2559+ ret = php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 0 TSRMLS_CC );
25592560 efree (tmp );
2560- return 1 ;
2561+ return 1 == ret ;
25612562 }
25622563
2563- case TIMELIB_ZONETYPE_ID :
2564+ case TIMELIB_ZONETYPE_ID : {
2565+ int ret ;
25642566 convert_to_string (* z_timezone );
25652567
25662568 tzi = php_date_parse_tzfile (Z_STRVAL_PP (z_timezone ), DATE_TIMEZONEDB TSRMLS_CC );
@@ -2571,9 +2573,10 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
25712573 tzobj -> tzi .tz = tzi ;
25722574 tzobj -> initialized = 1 ;
25732575
2574- php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 0 TSRMLS_CC );
2576+ ret = php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 0 TSRMLS_CC );
25752577 zval_ptr_dtor (& tmp_obj );
2576- return 1 ;
2578+ return 1 == ret ;
2579+ }
25772580 }
25782581 }
25792582 }
@@ -2597,7 +2600,9 @@ PHP_METHOD(DateTime, __set_state)
25972600
25982601 php_date_instantiate (date_ce_date , return_value TSRMLS_CC );
25992602 dateobj = (php_date_obj * ) zend_object_store_get_object (return_value TSRMLS_CC );
2600- php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC );
2603+ if (!php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC )) {
2604+ php_error (E_ERROR , "Invalid serialization data for DateTime object" );
2605+ }
26012606}
26022607/* }}} */
26032608
@@ -2613,7 +2618,9 @@ PHP_METHOD(DateTime, __wakeup)
26132618
26142619 myht = Z_OBJPROP_P (object );
26152620
2616- php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC );
2621+ if (!php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC )) {
2622+ php_error (E_ERROR , "Invalid serialization data for DateTime object" );
2623+ }
26172624}
26182625/* }}} */
26192626
0 commit comments