summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@openedhand.com>2007-10-29 22:16:31 +0000
committerEmmanuele Bassi <ebassi@openedhand.com>2007-10-29 22:16:31 +0000
commit25cdc18be8acdad54561f919c5805ad4fa9b3ac9 (patch)
tree16a3252ca292831996cb3e48a901cfbc3d199be7 /json-glib/json-parser.c
parent812422e4ed4df83374cdda6d94637448ab94dfef (diff)
downloadjson-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.c10
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);