[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 02/58] check-qjson: Cover multiple JSON objects in sa
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 02/58] check-qjson: Cover multiple JSON objects in same string |
Date: |
Fri, 24 Aug 2018 21:31:10 +0200 |
qobject_from_json() & friends misbehave when the JSON text has more
than one JSON value. Add test coverage to demonstrate the bugs.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
---
tests/check-qjson.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tests/check-qjson.c b/tests/check-qjson.c
index eaf5d20663..cc952c56ea 100644
--- a/tests/check-qjson.c
+++ b/tests/check-qjson.c
@@ -1418,6 +1418,25 @@ static void limits_nesting(void)
g_assert(obj == NULL);
}
+static void multiple_values(void)
+{
+ Error *err = NULL;
+ QObject *obj;
+
+ /* BUG this leaks the syntax tree for "false" */
+ obj = qobject_from_json("false true", &err);
+ g_assert(qbool_get_bool(qobject_to(QBool, obj)));
+ g_assert(!err);
+ qobject_unref(obj);
+
+ /* BUG simultaneously succeeds and fails */
+ /* BUG calls json_parser_parse() with errp pointing to non-null */
+ obj = qobject_from_json("} true", &err);
+ g_assert(qbool_get_bool(qobject_to(QBool, obj)));
+ error_free_or_abort(&err);
+ qobject_unref(obj);
+}
+
int main(int argc, char **argv)
{
g_test_init(&argc, &argv, NULL);
@@ -1455,6 +1474,7 @@ int main(int argc, char **argv)
g_test_add_func("/errors/invalid_dict_comma", invalid_dict_comma);
g_test_add_func("/errors/unterminated/literal", unterminated_literal);
g_test_add_func("/errors/limits/nesting", limits_nesting);
+ g_test_add_func("/errors/multiple_values", multiple_values);
return g_test_run();
}
--
2.17.1
- [Qemu-devel] [PULL 00/58] QObject patches for 2018-08-24, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 07/58] test-qga: Clean up how we test QGA synchronization, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 04/58] check-qjson: Cover whitespace more thoroughly, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 03/58] check-qjson: Cover blank and lexically erroneous input, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 17/58] json: Fix lexer to include the bad character in JSON_ERROR token, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 06/58] qmp-test: Cover syntax and lexical errors, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 13/58] check-qjson: Simplify utf8_string(), Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 02/58] check-qjson: Cover multiple JSON objects in same string,
Markus Armbruster <=
- [Qemu-devel] [PULL 20/58] json: Tighten and simplify qstring_from_escaped_str()'s loop, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 11/58] check-qjson: Consolidate partly redundant string tests, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 33/58] json: Have lexer call streamer directly, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 12/58] check-qjson: Cover UTF-8 in single quoted strings, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 25/58] json: Accept overlong \xC0\x80 as U+0000 ("modified UTF-8"), Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 01/58] docs/interop/qmp-spec: How to force known good parser state, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 15/58] check-qjson qmp-test: Cover control characters more thoroughly, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 16/58] check-qjson: Cover interpolation more thoroughly, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 10/58] check-qjson: Cover escaped characters more thoroughly, part 2, Markus Armbruster, 2018/08/24
- [Qemu-devel] [PULL 30/58] check-qjson: Fix and enable utf8_string()'s disabled part, Markus Armbruster, 2018/08/24