diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2007-10-29 22:16:31 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2007-10-29 22:16:31 +0000 |
commit | 25cdc18be8acdad54561f919c5805ad4fa9b3ac9 (patch) | |
tree | 16a3252ca292831996cb3e48a901cfbc3d199be7 /json-glib/json-parser.c | |
parent | 812422e4ed4df83374cdda6d94637448ab94dfef (diff) | |
download | json-glib-25cdc18be8acdad54561f919c5805ad4fa9b3ac9.tar.gz |
Add more sanity checks to the parser
Catch missing commas after an array element or an object member.
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r-- | json-glib/json-parser.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index 4700ff3..e8aed72 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -392,6 +392,9 @@ json_parse_array (JsonParser *parser, if (token == G_TOKEN_RIGHT_BRACE) break; + if (token != G_TOKEN_COMMA) + return G_TOKEN_RIGHT_BRACE; + continue; } @@ -425,6 +428,9 @@ json_parse_array (JsonParser *parser, if (token == G_TOKEN_RIGHT_BRACE) break; + if (token != G_TOKEN_COMMA) + return G_TOKEN_RIGHT_BRACE; + continue; } @@ -489,6 +495,8 @@ json_parse_array (JsonParser *parser, } token = g_scanner_get_next_token (scanner); + if (token != G_TOKEN_COMMA && token != G_TOKEN_RIGHT_BRACE) + return G_TOKEN_RIGHT_BRACE; } json_node_take_array (priv->current_node, array); @@ -692,6 +700,8 @@ json_parse_object (JsonParser *parser, g_free (name); token = g_scanner_get_next_token (scanner); + if (token != G_TOKEN_COMMA && token != G_TOKEN_RIGHT_CURLY) + return G_TOKEN_RIGHT_CURLY; } json_node_take_object (priv->current_node, object); |