aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéa Saviot2019-11-22 14:06:49 +0100
committerDamien George2019-11-26 00:28:32 +1100
commita7bc4d1a1455a8a5cdea53d7a2caf03c9320f460 (patch)
tree9aba81df900652ea42284c9cf800599fff7acaa2
parent6b3404f25e3d901d9b1313f2827a760093cddd92 (diff)
py/builtinimport: Raise exception on empty module name.
To prevent a crash returning MP_OBJ_NULL. A test is added for this case.
-rw-r--r--py/builtinimport.c4
-rw-r--r--tests/import/builtin_import.py6
2 files changed, 10 insertions, 0 deletions
diff --git a/py/builtinimport.c b/py/builtinimport.c
index b9f6c2ab2..9d91b2059 100644
--- a/py/builtinimport.c
+++ b/py/builtinimport.c
@@ -334,6 +334,10 @@ mp_obj_t mp_builtin___import__(size_t n_args, const mp_obj_t *args) {
mod_len = new_mod_l;
}
+ if (mod_len == 0) {
+ mp_raise_ValueError(NULL);
+ }
+
// check if module already exists
qstr module_name_qstr = mp_obj_str_get_qstr(module_name);
mp_obj_t module_obj = mp_module_get(module_name_qstr);
diff --git a/tests/import/builtin_import.py b/tests/import/builtin_import.py
index 088f631fc..157da9839 100644
--- a/tests/import/builtin_import.py
+++ b/tests/import/builtin_import.py
@@ -9,6 +9,12 @@ try:
except TypeError:
print('TypeError')
+# module name should not be empty
+try:
+ __import__("")
+except ValueError:
+ print('ValueError')
+
# level argument should be non-negative
try:
__import__('xyz', None, None, None, -1)