|
@@ -265,7 +265,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, |
|
|
if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok))) |
|
|
if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok))) |
|
|
goto out; |
|
|
goto out; |
|
|
} |
|
|
} |
|
|
if(c == '/') { |
|
|
|
|
|
|
|
|
if(c == '/' && !(tok->flags & JSON_TOKENER_STRICT)) { |
|
|
printbuf_reset(tok->pb); |
|
|
printbuf_reset(tok->pb); |
|
|
printbuf_memappend_fast(tok->pb, &c, 1); |
|
|
printbuf_memappend_fast(tok->pb, &c, 1); |
|
|
state = json_tokener_state_comment_start; |
|
|
state = json_tokener_state_comment_start; |
|
@@ -293,8 +293,13 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, |
|
|
printbuf_reset(tok->pb); |
|
|
printbuf_reset(tok->pb); |
|
|
tok->st_pos = 0; |
|
|
tok->st_pos = 0; |
|
|
goto redo_char; |
|
|
goto redo_char; |
|
|
case '"': |
|
|
|
|
|
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; |
|
|
state = json_tokener_state_string; |
|
|
printbuf_reset(tok->pb); |
|
|
printbuf_reset(tok->pb); |
|
|
tok->quote_char = c; |
|
|
tok->quote_char = c; |
|
@@ -764,6 +769,13 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, |
|
|
} /* while(POP_CHAR) */ |
|
|
} /* while(POP_CHAR) */ |
|
|
|
|
|
|
|
|
out: |
|
|
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 (!c) { /* We hit an eof char (0) */ |
|
|
if(state != json_tokener_state_finish && |
|
|
if(state != json_tokener_state_finish && |
|
|
saved_state != json_tokener_state_finish) |
|
|
saved_state != json_tokener_state_finish) |
|
|