py/builtinimport: Raise exception on empty module name.

To prevent a crash returning MP_OBJ_NULL.  A test is added for this case.
This commit is contained in:
Léa Saviot 2019-11-22 14:06:49 +01:00 committed by Damien George
parent 6b3404f25e
commit a7bc4d1a14
2 changed files with 10 additions and 0 deletions

View File

@ -334,6 +334,10 @@ mp_obj_t mp_builtin___import__(size_t n_args, const mp_obj_t *args) {
mod_len = new_mod_l; mod_len = new_mod_l;
} }
if (mod_len == 0) {
mp_raise_ValueError(NULL);
}
// check if module already exists // check if module already exists
qstr module_name_qstr = mp_obj_str_get_qstr(module_name); qstr module_name_qstr = mp_obj_str_get_qstr(module_name);
mp_obj_t module_obj = mp_module_get(module_name_qstr); mp_obj_t module_obj = mp_module_get(module_name_qstr);

View File

@ -9,6 +9,12 @@ try:
except TypeError: except TypeError:
print('TypeError') print('TypeError')
# module name should not be empty
try:
__import__("")
except ValueError:
print('ValueError')
# level argument should be non-negative # level argument should be non-negative
try: try:
__import__('xyz', None, None, None, -1) __import__('xyz', None, None, None, -1)