diff options
author | Markus Armbruster <armbru@redhat.com> | 2018-08-23 18:40:11 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2018-08-24 20:26:37 +0200 |
commit | e06d008ac833ac220b920f4d8858e6f62f7a59f9 (patch) | |
tree | 8b28f96005d8129d8b8ab14882f9d0a9dfcb1670 /qobject | |
parent | 2a4794ba146d6560bd77ca840ff6908f81d585f4 (diff) | |
download | qemu-e06d008ac833ac220b920f4d8858e6f62f7a59f9.zip qemu-e06d008ac833ac220b920f4d8858e6f62f7a59f9.tar.gz qemu-e06d008ac833ac220b920f4d8858e6f62f7a59f9.tar.bz2 |
json: Fix latent parser aborts at end of input
json-parser.c carefully reports end of input like this:
token = parser_context_pop_token(ctxt);
if (token == NULL) {
parse_error(ctxt, NULL, "premature EOI");
goto out;
}
Except parser_context_pop_token() can't return null, it fails its
assertion instead. Same for parser_context_peek_token(). Broken in
commit 65c0f1e9558, and faithfully preserved in commit 95385fe9ace.
Only a latent bug, because the streamer throws away any input that
could trigger it.
Drop the assertions, so we can fix the streamer in the next commit.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180823164025.12553-45-armbru@redhat.com>
Diffstat (limited to 'qobject')
-rw-r--r-- | qobject/json-parser.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/qobject/json-parser.c b/qobject/json-parser.c index 27e873a..e3ee2a2 100644 --- a/qobject/json-parser.c +++ b/qobject/json-parser.c @@ -226,14 +226,12 @@ out: static JSONToken *parser_context_pop_token(JSONParserContext *ctxt) { g_free(ctxt->current); - assert(!g_queue_is_empty(ctxt->buf)); ctxt->current = g_queue_pop_head(ctxt->buf); return ctxt->current; } static JSONToken *parser_context_peek_token(JSONParserContext *ctxt) { - assert(!g_queue_is_empty(ctxt->buf)); return g_queue_peek_head(ctxt->buf); } |