aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2013-09-30 09:35:45 +0300
committerPetri Lehtinen <petri@digip.org>2013-09-30 10:45:02 +0300
commit4d5aead31cbc783915a1e0fe2e240316e5d71631 (patch)
tree062f5e75ade0b06ef257e1e24a22f4ec1d94f6f5
parent78a80b8899d9267fe189a33ab7f4291eb4885bae (diff)
downloadjansson-4d5aead31cbc783915a1e0fe2e240316e5d71631.zip
jansson-4d5aead31cbc783915a1e0fe2e240316e5d71631.tar.gz
jansson-4d5aead31cbc783915a1e0fe2e240316e5d71631.tar.bz2
Fix NUL byte check for object keys
-rw-r--r--src/load.c2
-rw-r--r--test/suites/invalid/null-byte-in-object-key/error2
-rw-r--r--test/suites/invalid/null-byte-in-object-key/input1
3 files changed, 4 insertions, 1 deletions
diff --git a/src/load.c b/src/load.c
index 2c7b71e..894ee10 100644
--- a/src/load.c
+++ b/src/load.c
@@ -699,7 +699,7 @@ static json_t *parse_object(lex_t *lex, size_t flags, json_error_t *error)
key = lex_steal_string(lex, &len);
if(!key)
return NULL;
- if (memchr(key, len, '\0')) {
+ if (memchr(key, '\0', len)) {
jsonp_free(key);
error_set(error, lex, "NUL byte in object key not supported");
goto error;
diff --git a/test/suites/invalid/null-byte-in-object-key/error b/test/suites/invalid/null-byte-in-object-key/error
new file mode 100644
index 0000000..3ec685b
--- /dev/null
+++ b/test/suites/invalid/null-byte-in-object-key/error
@@ -0,0 +1,2 @@
+1 15 15
+NUL byte in object key not supported near '"foo\u0000bar"'
diff --git a/test/suites/invalid/null-byte-in-object-key/input b/test/suites/invalid/null-byte-in-object-key/input
new file mode 100644
index 0000000..593f0f6
--- /dev/null
+++ b/test/suites/invalid/null-byte-in-object-key/input
@@ -0,0 +1 @@
+{"foo\u0000bar": 42} \ No newline at end of file