diff options
| author | Léa Saviot | 2019-11-22 14:06:49 +0100 |
|---|---|---|
| committer | Damien George | 2019-11-26 00:28:32 +1100 |
| commit | a7bc4d1a1455a8a5cdea53d7a2caf03c9320f460 (patch) | |
| tree | 9aba81df900652ea42284c9cf800599fff7acaa2 | |
| parent | 6b3404f25e3d901d9b1313f2827a760093cddd92 (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.c | 4 | ||||
| -rw-r--r-- | tests/import/builtin_import.py | 6 |
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) |
