php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | |
Patch jsonserializedepth for JSON related Bug #72073Patch version 2016-04-22 17:11 UTC Return to Bug #72073 | Download this patchThis patch renders other patches obsolete Obsolete patches: Patch Revisions:
Developer: jani.ollikainen@valve.fi--- php-json-1.3.2.orig/jsonc-1.3.2/json.c +++ php-json-1.3.2/jsonc-1.3.2/json.c @@ -681,7 +681,7 @@ static void json_escape_string(smart_str static void json_encode_serializable_object(smart_str *buf, zval *val, int options TSRMLS_DC) /* {{{ */ { zend_class_entry *ce = Z_OBJCE_P(val); - zval *retval = NULL, fname; + zval *retval = NULL, fname, **args[1], *depth; HashTable* myht; if (Z_TYPE_P(val) == IS_ARRAY) { @@ -696,16 +696,21 @@ static void json_encode_serializable_obj return; } + MAKE_STD_ZVAL(depth); + ZVAL_LONG(depth, JSON_G(encoder_depth)); + args[0] = &depth; ZVAL_STRING(&fname, "jsonSerialize", 0); - if (FAILURE == call_user_function_ex(EG(function_table), &val, &fname, &retval, 0, NULL, 1, NULL TSRMLS_CC) || !retval) { + if (FAILURE == call_user_function_ex(EG(function_table), &val, &fname, &retval, 1, args, 1, NULL TSRMLS_CC) || !retval) { zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Failed calling %s::jsonSerialize()", ce->name); smart_str_appendl(buf, "null", sizeof("null") - 1); + zval_ptr_dtor(&depth); return; } if (EG(exception)) { /* Error already raised */ + zval_ptr_dtor(&depth); zval_ptr_dtor(&retval); smart_str_appendl(buf, "null", sizeof("null") - 1); return; @@ -720,6 +725,7 @@ static void json_encode_serializable_obj php_json_encode(buf, retval, options TSRMLS_CC); } + zval_ptr_dtor(&depth); zval_ptr_dtor(&retval); } /* }}} */ |
Copyright © 2001-2024 The PHP Group All rights reserved. |
Last updated: Sun Dec 22 02:01:28 2024 UTC |