diff options
author | Anthony Liguori | 2011-06-01 19:14:54 +0200 |
---|---|---|
committer | Anthony Liguori | 2011-06-07 20:52:11 +0200 |
commit | eca7db46ff8f24a70f4040af3e941dc19fd33ebe (patch) | |
tree | 94f613c435de623c01a5944b79f170110e7566f1 | |
parent | json-streamer: limit the maximum recursion depth and maximum token count (diff) | |
download | qemu-eca7db46ff8f24a70f4040af3e941dc19fd33ebe.tar.gz qemu-eca7db46ff8f24a70f4040af3e941dc19fd33ebe.tar.xz qemu-eca7db46ff8f24a70f4040af3e941dc19fd33ebe.zip |
json-streamer: make sure to reset token_size after emitting a token list
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | json-streamer.c | 2 | ||||
-rw-r--r-- | json-streamer.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/json-streamer.c b/json-streamer.c index 6b9af63fb2..a6cb28f665 100644 --- a/json-streamer.c +++ b/json-streamer.c @@ -65,6 +65,7 @@ static void json_message_process_token(JSONLexer *lexer, QString *token, JSONTok parser->emit(parser, parser->tokens); QDECREF(parser->tokens); parser->tokens = qlist_new(); + parser->token_size = 0; } else if (parser->token_size > MAX_TOKEN_SIZE || parser->bracket_count > MAX_NESTING || parser->brace_count > MAX_NESTING) { @@ -76,6 +77,7 @@ static void json_message_process_token(JSONLexer *lexer, QString *token, JSONTok parser->emit(parser, parser->tokens); QDECREF(parser->tokens); parser->tokens = qlist_new(); + parser->token_size = 0; } } diff --git a/json-streamer.h b/json-streamer.h index 09f3bd70e4..f09bc4daec 100644 --- a/json-streamer.h +++ b/json-streamer.h @@ -24,6 +24,7 @@ typedef struct JSONMessageParser int brace_count; int bracket_count; QList *tokens; + uint64_t token_size; } JSONMessageParser; void json_message_parser_init(JSONMessageParser *parser, |