Selaa lähdekoodia

Throw error if user want to access message properties (#4603)

* Throw error if user want to access message properties

* Fix typo
Paul Yang 7 vuotta sitten
vanhempi
commit
7377d81ca4
2 muutettua tiedostoa jossa 8 lisäystä ja 2 poistoa
  1. 7 1
      php/ext/google/protobuf/message.c
  2. 1 1
      php/tests/test.sh

+ 7 - 1
php/ext/google/protobuf/message.c

@@ -222,7 +222,13 @@ static zval* message_get_property_ptr_ptr(zval* object, zval* member, int type,
 }
 
 static HashTable* message_get_properties(zval* object TSRMLS_DC) {
-  return NULL;
+  // User cannot get property directly (e.g., $a = $m->a)
+  zend_error(E_USER_ERROR, "Cannot access private properties.");
+#if PHP_MAJOR_VERSION < 7
+  return zend_std_get_properties(object TSRMLS_CC);
+#else
+  return zend_std_get_properties(object);
+#endif
 }
 
 static HashTable* message_get_gc(zval* object, CACHED_VALUE** table,

+ 1 - 1
php/tests/test.sh

@@ -21,7 +21,7 @@ do
   echo "****************************"
   echo "* $t"
   echo "****************************"
-  # php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
+  php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
   echo ""
 done