summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2012-10-26 10:10:01 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2012-10-26 11:12:58 +0100
commit028e540bc2b78f87e5a1d2f0c36126b7636f2809 (patch)
tree1feaa887e9c210c0a85b048b8f09b6e25358d4a2 /json-glib/json-parser.c
parent32d7c034dda3ccce05bec2bab0007ff0d65729ab (diff)
downloadjson-glib-028e540bc2b78f87e5a1d2f0c36126b7636f2809.tar.gz
parser: Empty member names are not valid
When parsing a JSON object, a member name has to be a valid string, not an empty one.
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r--json-glib/json-parser.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index d79d21c..4a55763 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -588,6 +588,19 @@ json_parse_object (JsonParser *parser,
/* member name */
token = json_scanner_get_next_token (scanner);
name = g_strdup (scanner->value.v_string);
+ if (name == NULL || *name == '\0')
+ {
+ JSON_NOTE (PARSER, "Empty object member name");
+
+ priv->error_code = JSON_PARSER_ERROR_EMPTY_MEMBER_NAME;
+
+ json_object_unref (object);
+ json_node_free (priv->current_node);
+ priv->current_node = old_current;
+
+ return G_TOKEN_STRING;
+ }
+
JSON_NOTE (PARSER, "Object member '%s'", name);
/* a colon separates names from values */