summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2016-02-25 09:42:54 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2016-02-25 09:45:26 +0000
commita1490d9b6a3a21774d68f085f805d5f7a68b305e (patch)
treefef387429291efba651a52926672116cc47e4861 /json-glib/json-parser.c
parentc34b3541f9d2cb388bc20fecc9cf412d6ab0716d (diff)
downloadjson-glib-a1490d9b6a3a21774d68f085f805d5f7a68b305e.tar.gz
parser: Detect missing commas in arrays
Just like we detect trailing commas, we should also detect missing ones to avoid parsing invalid JSON successfully.
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r--json-glib/json-parser.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index ee4e765..812f038 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -488,12 +488,25 @@ json_parse_array (JsonParser *parser,
next_token = json_scanner_peek_next_token (scanner);
+ /* look for missing commas */
+ if (next_token != G_TOKEN_COMMA && next_token != G_TOKEN_RIGHT_BRACE)
+ {
+ priv->error_code = JSON_PARSER_ERROR_MISSING_COMMA;
+
+ json_array_unref (array);
+ json_node_free (priv->current_node);
+ json_node_free (element);
+ priv->current_node = old_current;
+
+ return G_TOKEN_COMMA;
+ }
+
+ /* look for trailing commas */
if (next_token == G_TOKEN_COMMA)
{
token = json_scanner_get_next_token (scanner);
next_token = json_scanner_peek_next_token (scanner);
- /* look for trailing commas */
if (next_token == G_TOKEN_RIGHT_BRACE)
{
priv->error_code = JSON_PARSER_ERROR_TRAILING_COMMA;