diff options
| author | Emmanuele Bassi <ebassi@gnome.org> | 2016-02-25 09:42:54 +0000 |
|---|---|---|
| committer | Emmanuele Bassi <ebassi@gnome.org> | 2016-02-25 09:47:40 +0000 |
| commit | 13a632853fb28cab6c9d3c2bff2823e77467abaa (patch) | |
| tree | 377590fe043bb9a8cf18702c2ea212b8e986690c /json-glib/json-parser.c | |
| parent | 12389dcce39e5248014ef645fd5df583212b415a (diff) | |
| download | json-glib-13a632853fb28cab6c9d3c2bff2823e77467abaa.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.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index c0fa855..254f6b9 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; |
