summaryrefslogtreecommitdiff
path: root/ext/json
diff options
context:
space:
mode:
authorScott MacVicar <scottmac@php.net>2008-12-12 23:19:47 +0000
committerScott MacVicar <scottmac@php.net>2008-12-12 23:19:47 +0000
commited5f04710b2535f7c1f620c0289f56d17a7dba33 (patch)
tree27323d16c61316108836c587d47587ba1e7cd54a /ext/json
parentdddbfccb9fa49d77d5dc556abdf667a016c73065 (diff)
downloadphp-git-ed5f04710b2535f7c1f620c0289f56d17a7dba33.tar.gz
MFH Fix bug #45989 - json_decode() doesn't return NULL on certain invalid strings
Diffstat (limited to 'ext/json')
-rw-r--r--ext/json/json.c8
-rw-r--r--ext/json/tests/001.phpt12
-rw-r--r--ext/json/tests/bug42090.phpt7
3 files changed, 10 insertions, 17 deletions
diff --git a/ext/json/json.c b/ext/json/json.c
index b52b3ff5f3..24afcdf560 100644
--- a/ext/json/json.c
+++ b/ext/json/json.c
@@ -523,13 +523,7 @@ static PHP_FUNCTION(json_decode)
RETURN_DOUBLE(d);
}
}
- if (str_len > 1 && *str == '"' && str[str_len-1] == '"') {
- RETURN_STRINGL(str+1, str_len-2, 1);
- } else if (*str == '{' || *str == '[') { /* invalid JSON string */
- RETURN_NULL();
- } else {
- RETURN_STRINGL(str, str_len, 1);
- }
+ RETURN_NULL();
}
}
/* }}} */
diff --git a/ext/json/tests/001.phpt b/ext/json/tests/001.phpt
index 4c9f918b48..095aedf631 100644
--- a/ext/json/tests/001.phpt
+++ b/ext/json/tests/001.phpt
@@ -31,12 +31,12 @@ NULL
NULL
NULL
NULL
-string(1) "."
-string(1) "."
-string(3) "<?>"
-string(1) ";"
-string(12) "руссиш"
-string(4) "blah"
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
NULL
object(stdClass)#1 (1) {
["test"]=>
diff --git a/ext/json/tests/bug42090.phpt b/ext/json/tests/bug42090.phpt
index daa57c3474..9e5b3317e5 100644
--- a/ext/json/tests/bug42090.phpt
+++ b/ext/json/tests/bug42090.phpt
@@ -16,10 +16,9 @@ var_dump(
?>
--EXPECT--
string(0) ""
-string(5) "".."."
-string(1) """
-string(2) """"
+NULL
+NULL
+NULL
string(4) ""\"""
string(1) """
string(2) """"
-