89 lines
2.5 KiB
Diff
89 lines
2.5 KiB
Diff
|
From a07ef3d19763094ab35cc009657c85bcbb9dd9ae Mon Sep 17 00:00:00 2001
|
||
|
From: Remi Collet <fedora@famillecollet.com>
|
||
|
Date: Tue, 6 Aug 2013 10:41:14 +0200
|
||
|
Subject: [PATCH 1/3] no single-quote string in strict mode
|
||
|
|
||
|
---
|
||
|
json_tokener.c | 7 ++++++-
|
||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/json_tokener.c b/json_tokener.c
|
||
|
index a6924a1..45390ac 100644
|
||
|
--- a/json_tokener.c
|
||
|
+++ b/json_tokener.c
|
||
|
@@ -293,8 +293,13 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
|
||
|
printbuf_reset(tok->pb);
|
||
|
tok->st_pos = 0;
|
||
|
goto redo_char;
|
||
|
- case '"':
|
||
|
case '\'':
|
||
|
+ if (tok->flags & JSON_TOKENER_STRICT) {
|
||
|
+ /* in STRICT mode only double-quote are allowed */
|
||
|
+ tok->err = json_tokener_error_parse_unexpected;
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+ case '"':
|
||
|
state = json_tokener_state_string;
|
||
|
printbuf_reset(tok->pb);
|
||
|
tok->quote_char = c;
|
||
|
--
|
||
|
1.8.1.6
|
||
|
|
||
|
|
||
|
From 87fa32dfe013d961ced5252ffacef0beefc8f62f Mon Sep 17 00:00:00 2001
|
||
|
From: Remi Collet <fedora@famillecollet.com>
|
||
|
Date: Wed, 21 Aug 2013 15:41:40 +0200
|
||
|
Subject: [PATCH 2/3] no comment in strict mode
|
||
|
|
||
|
---
|
||
|
json_tokener.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/json_tokener.c b/json_tokener.c
|
||
|
index 45390ac..7ce53ca 100644
|
||
|
--- a/json_tokener.c
|
||
|
+++ b/json_tokener.c
|
||
|
@@ -265,7 +265,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
|
||
|
if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
|
||
|
goto out;
|
||
|
}
|
||
|
- if(c == '/') {
|
||
|
+ if(c == '/' && !(tok->flags & JSON_TOKENER_STRICT)) {
|
||
|
printbuf_reset(tok->pb);
|
||
|
printbuf_memappend_fast(tok->pb, &c, 1);
|
||
|
state = json_tokener_state_comment_start;
|
||
|
--
|
||
|
1.8.1.6
|
||
|
|
||
|
|
||
|
From 4039f91cab283b483094dbe59202818bb1733d66 Mon Sep 17 00:00:00 2001
|
||
|
From: Remi Collet <fedora@famillecollet.com>
|
||
|
Date: Fri, 23 Aug 2013 13:40:01 +0200
|
||
|
Subject: [PATCH 3/3] trailing char not allowed in strict mode
|
||
|
|
||
|
---
|
||
|
json_tokener.c | 7 +++++++
|
||
|
1 file changed, 7 insertions(+)
|
||
|
|
||
|
diff --git a/json_tokener.c b/json_tokener.c
|
||
|
index 7ce53ca..def6e10 100644
|
||
|
--- a/json_tokener.c
|
||
|
+++ b/json_tokener.c
|
||
|
@@ -769,6 +769,13 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
|
||
|
} /* while(POP_CHAR) */
|
||
|
|
||
|
out:
|
||
|
+ if (c &&
|
||
|
+ (state == json_tokener_state_finish) &&
|
||
|
+ (tok->depth == 0) &&
|
||
|
+ (tok->flags & JSON_TOKENER_STRICT)) {
|
||
|
+ /* unexpected char after JSON data */
|
||
|
+ tok->err = json_tokener_error_parse_unexpected;
|
||
|
+ }
|
||
|
if (!c) { /* We hit an eof char (0) */
|
||
|
if(state != json_tokener_state_finish &&
|
||
|
saved_state != json_tokener_state_finish)
|
||
|
--
|
||
|
1.8.1.6
|
||
|
|