From 9966587aafae57394887fe24391960c17a95583c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 28 Apr 2005 17:40:11 +0000 Subject: [PATCH] Fixed bug #29015 (Incorrect behavior of member vars(non string ones)-numeric mem vars und others) --- Zend/tests/bug29015.phpt | 11 +++++++++++ Zend/zend_object_handlers.c | 10 ++++++++++ 2 files changed, 21 insertions(+) create mode 100644 Zend/tests/bug29015.phpt diff --git a/Zend/tests/bug29015.phpt b/Zend/tests/bug29015.phpt new file mode 100644 index 0000000000..6c18ab8a09 --- /dev/null +++ b/Zend/tests/bug29015.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #29015 (Incorrect behavior of member vars(non string ones)-numeric mem vars und others) +--FILE-- +$x = "string('')"; +var_dump($a); +?> +--EXPECTF-- +Fatal error: Cannot access empty property in %sbug29015.php on line 4 diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index e7ac0a3e78..64c2aa515e 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -147,6 +147,16 @@ ZEND_API struct _zend_property_info *zend_get_property_info(zend_class_entry *ce zend_property_info *scope_property_info; zend_bool denied_access = 0; + if (Z_STRVAL_P(member)[0] == '\0') { + if (!silent) { + if (Z_STRLEN_P(member) == 0) { + zend_error(E_ERROR, "Cannot access empty property"); + } else { + zend_error(E_ERROR, "Cannot access property started with '\\0'"); + } + } + return NULL; + } ulong h = zend_get_hash_value(Z_STRVAL_P(member), Z_STRLEN_P(member)+1); if (zend_hash_quick_find(&ce->properties_info, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, h, (void **) &property_info)==SUCCESS) { if (zend_verify_property_access(property_info, ce TSRMLS_CC)) { -- 2.50.1