summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-02-02 21:52:19 +0000
committerDamien George <damien.p.george@gmail.com>2015-02-02 21:52:19 +0000
commit5f64dc55d89444fcc3a5903d658eb327e1b6ef74 (patch)
tree94effbc0fd58bc50ba682dc99d0f83102c1446c7
parente8b877be6018893f1250c87424c3886f115b0051 (diff)
extmod: Make ujson.loads raise exception if given empty string.
Addresses issue #1097.
-rw-r--r--extmod/modujson.c3
-rw-r--r--tests/extmod/ujson_loads.py6
2 files changed, 8 insertions, 1 deletions
diff --git a/extmod/modujson.c b/extmod/modujson.c
index a7b889676..d1d103237 100644
--- a/extmod/modujson.c
+++ b/extmod/modujson.c
@@ -239,7 +239,8 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
// unexpected chars
goto fail;
}
- if (stack.len != 0) {
+ if (stack_top == MP_OBJ_NULL || stack.len != 0) {
+ // not exactly 1 object
goto fail;
}
vstr_clear(&vstr);
diff --git a/tests/extmod/ujson_loads.py b/tests/extmod/ujson_loads.py
index 05bd62a9b..75e61dacd 100644
--- a/tests/extmod/ujson_loads.py
+++ b/tests/extmod/ujson_loads.py
@@ -33,3 +33,9 @@ my_print(json.loads('{"a":[], "b":[1], "c":{"3":4}}'))
# whitespace handling
my_print(json.loads('{\n\t"a":[]\r\n, "b":[1], "c":{"3":4} \n\r\t\r\r\r\n}'))
+
+# loading nothing should raise exception
+try:
+ json.loads('')
+except ValueError:
+ print('ValueError')