Fixed bug #32455 (wrong setting property to unset value)

This commit is contained in:
Dmitry Stogov 2005-10-11 10:15:40 +00:00
parent 631da59b50
commit bb8e5de181
2 changed files with 10 additions and 1 deletions

1
NEWS
View File

@ -174,6 +174,7 @@ PHP NEWS
seg fault). (Dmitry)
- Fixed bug #32937 (open_basedir looses trailing / in the limiter). (Adam Conrad)
- Fixed bug #32589 (possible crash inside imap_mail_compose() function). (Ilia)
- Fixed bug #32455 (wrong setting property to unset value). (Dmitry)
- Fixed bug #32179 (xmlrpc_encode() segfaults with recursive references). (Tony)
- Fixed bug #32139 (SOAP client does not auto-handle base64 encoding). (Ilia)
- Fixed bug #32010 (Memory leak in mssql_fetch_batch). (fmk)

View File

@ -991,10 +991,18 @@ static zval* get_zval_property(zval* object, char* name TSRMLS_DC)
old_scope = EG(scope);
EG(scope) = Z_OBJCE_P(object);
data = Z_OBJ_HT_P(object)->read_property(object, &member, BP_VAR_IS TSRMLS_CC);
EG(scope) = old_scope;
if (data == EG(uninitialized_zval_ptr)) {
/* Hack for bug #32455 */
zend_property_info *property_info;
property_info = zend_get_property_info(Z_OBJCE_P(object), &member, 1 TSRMLS_CC);
EG(scope) = old_scope;
if (property_info && zend_hash_quick_exists(Z_OBJPROP_P(object), property_info->name, property_info->name_length+1, property_info->h)) {
return data;
}
return NULL;
}
EG(scope) = old_scope;
return data;
} else if (Z_TYPE_P(object) == IS_ARRAY) {
zval **data_ptr;