diff options
Diffstat (limited to 'ext/json/json.c')
-rw-r--r-- | ext/json/json.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/json/json.c b/ext/json/json.c index e8b111b28c..2acfb5e79f 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -258,6 +258,16 @@ static PHP_FUNCTION(json_decode) RETURN_NULL(); } + if (depth <= 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Depth must be greater than zero"); + RETURN_NULL(); + } + + if (depth > INT_MAX) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Depth must be lower than %d", INT_MAX); + RETURN_NULL(); + } + /* For BC reasons, the bool $assoc overrides the long $options bit for PHP_JSON_OBJECT_AS_ARRAY */ if (assoc) { options |= PHP_JSON_OBJECT_AS_ARRAY; |