diff options
| author | Stanislav Malyshev <stas@php.net> | 2016-09-25 16:43:24 -0700 |
|---|---|---|
| committer | Stanislav Malyshev <stas@php.net> | 2016-09-25 16:43:24 -0700 |
| commit | 1b29e4488e19c89e5b37ecb26acaec443d7f1355 (patch) | |
| tree | 411ac1043b5339d64bd3f10440c4b204d3c018ba /ext/date/php_date.c | |
| parent | 07c6bdb85d3efe21598ebb8af6fcebceb9d486e9 (diff) | |
| download | php-git-1b29e4488e19c89e5b37ecb26acaec443d7f1355.tar.gz | |
Fix bug #73091 - Unserializing DateInterval object may lead to __toString invocation
Diffstat (limited to 'ext/date/php_date.c')
| -rw-r--r-- | ext/date/php_date.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index dbcd9d0404..d4c695c6b7 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -4113,7 +4113,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter #define PHP_DATE_INTERVAL_READ_PROPERTY(element, member, itype, def) \ do { \ zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \ - if (z_arg) { \ + if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \ (*intobj)->diff->member = (itype)zval_get_long(z_arg); \ } else { \ (*intobj)->diff->member = (itype)def; \ @@ -4123,7 +4123,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter #define PHP_DATE_INTERVAL_READ_PROPERTY_I64(element, member) \ do { \ zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \ - if (z_arg) { \ + if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \ zend_string *str = zval_get_string(z_arg); \ DATE_A64I((*intobj)->diff->member, ZSTR_VAL(str)); \ zend_string_release(str); \ |
