[libvirt] [PATCH 2/3] json: reject javascript comments

Eric Blake eblake at redhat.com
Mon Jun 22 20:18:33 UTC 2015


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 at 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




More information about the libvir-list mailing list