diff options
| author | Etienne Kneuss <colder@php.net> | 2008-12-22 14:11:49 +0000 |
|---|---|---|
| committer | Etienne Kneuss <colder@php.net> | 2008-12-22 14:11:49 +0000 |
| commit | f48d22afa110265ad8edf32bed98c46a914b1b79 (patch) | |
| tree | 6c10e0ef337e9c5304f950ebc4a30df182b9b5fe /Zend/zend_closures.c | |
| parent | 3c1e53deb499f92607e345192868196d04d8b5e2 (diff) | |
| download | php-git-f48d22afa110265ad8edf32bed98c46a914b1b79.tar.gz | |
MFH: Fix #46646 (Implement zend functions to restrict serialization or internal classes)
Diffstat (limited to 'Zend/zend_closures.c')
| -rw-r--r-- | Zend/zend_closures.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index b5f7e0ea0e..ac3e5b91eb 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -22,6 +22,7 @@ #include "zend.h" #include "zend_API.h" #include "zend_closures.h" +#include "zend_interfaces.h" #include "zend_objects.h" #include "zend_objects_API.h" #include "zend_globals.h" @@ -79,20 +80,6 @@ static zend_function *zend_closure_get_constructor(zval *object TSRMLS_DC) /* {{ } /* }}} */ -static int zend_closure_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC) /* {{{ */ -{ - zend_error(E_RECOVERABLE_ERROR, "Serialization of 'Closure' is not allowed"); - return FAILURE; -} -/* }}} */ - -static int zend_closure_unserialize(zval **object, zend_class_entry *ce, const unsigned char *buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) /* {{{ */ -{ - zend_error(E_RECOVERABLE_ERROR, "Unserialization of 'Closure' is not allowed"); - return FAILURE; -} -/* }}} */ - static int zend_closure_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{{ */ { return (Z_OBJ_HANDLE_P(o1) != Z_OBJ_HANDLE_P(o2)); @@ -243,8 +230,8 @@ void zend_register_closure_ce(TSRMLS_D) /* {{{ */ zend_ce_closure = zend_register_internal_class(&ce TSRMLS_CC); zend_ce_closure->ce_flags |= ZEND_ACC_FINAL_CLASS; zend_ce_closure->create_object = zend_closure_new; - zend_ce_closure->serialize = zend_closure_serialize; - zend_ce_closure->unserialize = zend_closure_unserialize; + zend_ce_closure->serialize = zend_class_serialize_deny; + zend_ce_closure->unserialize = zend_class_unserialize_deny; memcpy(&closure_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); closure_handlers.get_constructor = zend_closure_get_constructor; |
