We have been allowing javascript style comments in JSON ever
since commit 9428f2c (v0.7.5), but qemu doesn't send them, and
they are not strict JSON. Reject them for now; if we can later
prove that it is worthwhile, we can reinstate it at that point
(or even make it conditional, by adding a bool parameter to
the libvirt entry point).
* src/util/virjson.c (virJSONValueFromString): Don't enable
comment parsing.
* tests/jsontest.c (mymain): Test it.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
src/util/virjson.c | 4 ++--
tests/jsontest.c | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/util/virjson.c b/src/util/virjson.c
index 4257b30..8d12fad 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -1596,7 +1596,7 @@ virJSONValueFromString(const char *jsonstring)
int rc;
size_t len = strlen(jsonstring);
# ifndef WITH_YAJL2
- yajl_parser_config cfg = { 1, 1 };
+ yajl_parser_config cfg = { 0, 1 };
# endif
VIR_DEBUG("string=%s", jsonstring);
@@ -1604,7 +1604,7 @@ virJSONValueFromString(const char *jsonstring)
# ifdef WITH_YAJL2
hand = yajl_alloc(&parserCallbacks, NULL, &parser);
if (hand) {
- yajl_config(hand, yajl_allow_comments, 1);
+ yajl_config(hand, yajl_allow_comments, 0);
yajl_config(hand, yajl_dont_validate_strings, 0);
}
# else
diff --git a/tests/jsontest.c b/tests/jsontest.c
index 8ac0970..f6c2d84 100644
--- a/tests/jsontest.c
+++ b/tests/jsontest.c
@@ -418,6 +418,7 @@ mymain(void)
DO_TEST_PARSE_FAIL("incomplete keyword", "tr");
DO_TEST_PARSE_FAIL("overdone keyword", "[ truest ]");
DO_TEST_PARSE_FAIL("unknown keyword", "huh");
+ DO_TEST_PARSE_FAIL("comments", "[ /* nope */\n1 // not this
either\n]");
DO_TEST_PARSE_FAIL("object with numeric keys", "{ 1:1, 2:1, 3:2
}");
DO_TEST_PARSE_FAIL("unterminated object", "{ \"1\":1,
\"2\":1, \"3\":2");
--
2.4.3