diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2012-10-26 10:10:01 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2012-10-26 11:12:58 +0100 |
commit | 028e540bc2b78f87e5a1d2f0c36126b7636f2809 (patch) | |
tree | 1feaa887e9c210c0a85b048b8f09b6e25358d4a2 /json-glib/json-parser.c | |
parent | 32d7c034dda3ccce05bec2bab0007ff0d65729ab (diff) | |
download | json-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.c | 13 |
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 */ |