summaryrefslogtreecommitdiff
path: root/Zend/zend_closures.c
diff options
context:
space:
mode:
authorEtienne Kneuss <colder@php.net>2008-12-22 14:11:49 +0000
committerEtienne Kneuss <colder@php.net>2008-12-22 14:11:49 +0000
commitf48d22afa110265ad8edf32bed98c46a914b1b79 (patch)
tree6c10e0ef337e9c5304f950ebc4a30df182b9b5fe /Zend/zend_closures.c
parent3c1e53deb499f92607e345192868196d04d8b5e2 (diff)
downloadphp-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.c19
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;