@@ -2532,13 +2532,15 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
25322532 case TIMELIB_ZONETYPE_OFFSET :
25332533 case TIMELIB_ZONETYPE_ABBR : {
25342534 char * tmp = emalloc (Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 2 );
2535+ int ret ;
25352536 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 ));
2536- php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 0 TSRMLS_CC );
2537+ ret = php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 0 TSRMLS_CC );
25372538 efree (tmp );
2538- return 1 ;
2539+ return 1 == ret ;
25392540 }
25402541
2541- case TIMELIB_ZONETYPE_ID :
2542+ case TIMELIB_ZONETYPE_ID : {
2543+ int ret ;
25422544 convert_to_string (* z_timezone );
25432545
25442546 tzi = php_date_parse_tzfile (Z_STRVAL_PP (z_timezone ), DATE_TIMEZONEDB TSRMLS_CC );
@@ -2549,9 +2551,10 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
25492551 tzobj -> tzi .tz = tzi ;
25502552 tzobj -> initialized = 1 ;
25512553
2552- php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 0 TSRMLS_CC );
2554+ ret = php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 0 TSRMLS_CC );
25532555 zval_ptr_dtor (& tmp_obj );
2554- return 1 ;
2556+ return 1 == ret ;
2557+ }
25552558 }
25562559 }
25572560 }
@@ -2575,7 +2578,9 @@ PHP_METHOD(DateTime, __set_state)
25752578
25762579 php_date_instantiate (date_ce_date , return_value TSRMLS_CC );
25772580 dateobj = (php_date_obj * ) zend_object_store_get_object (return_value TSRMLS_CC );
2578- php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC );
2581+ if (!php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC )) {
2582+ php_error (E_ERROR , "Invalid serialization data for DateTime object" );
2583+ }
25792584}
25802585/* }}} */
25812586
@@ -2591,7 +2596,9 @@ PHP_METHOD(DateTime, __wakeup)
25912596
25922597 myht = Z_OBJPROP_P (object );
25932598
2594- php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC );
2599+ if (!php_date_initialize_from_hash (& return_value , & dateobj , myht TSRMLS_CC )) {
2600+ php_error (E_ERROR , "Invalid serialization data for DateTime object" );
2601+ }
25952602}
25962603/* }}} */
25972604
0 commit comments