json: Treat unwanted interpolation as lexical error
The JSON parser optionally supports interpolation. The lexer recognizes interpolation tokens unconditionally. The parser rejects them when interpolation is disabled, in parse_interpolation(). However, it neglects to set an error then, which can make json_parser_parse() fail without setting an error. Move the check for unwanted interpolation from the parser's parse_interpolation() into the lexer's finite state machine. When interpolation is disabled, '%' is now handled like any other unexpected character. The next commit will improve how such lexical errors are handled. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20180823164025.12553-39-armbru@redhat.com>
This commit is contained in:
@@ -115,7 +115,7 @@ void json_message_parser_init(JSONMessageParser *parser,
|
||||
parser->tokens = g_queue_new();
|
||||
parser->token_size = 0;
|
||||
|
||||
json_lexer_init(&parser->lexer);
|
||||
json_lexer_init(&parser->lexer, !!ap);
|
||||
}
|
||||
|
||||
void json_message_parser_feed(JSONMessageParser *parser,
|
||||
|
||||
Reference in New Issue
Block a user