bpo-31315: Fix an assertion failure in imp.create_dynamic(), when spec.name is not a string. (#3257)
This commit is contained in:
parent
6db7033192
commit
9974e1bcf3
|
@ -313,6 +313,17 @@ class ImportTests(unittest.TestCase):
|
|||
with self.assertRaisesRegex(ValueError, 'embedded null'):
|
||||
imp.load_source(__name__, __file__ + "\0")
|
||||
|
||||
@support.cpython_only
|
||||
def test_issue31315(self):
|
||||
# There shouldn't be an assertion failure in imp.create_dynamic(),
|
||||
# when spec.name is not a string.
|
||||
create_dynamic = support.get_attribute(imp, 'create_dynamic')
|
||||
class BadSpec:
|
||||
name = None
|
||||
origin = 'foo'
|
||||
with self.assertRaises(TypeError):
|
||||
create_dynamic(BadSpec())
|
||||
|
||||
|
||||
class ReloadTests(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix an assertion failure in imp.create_dynamic(), when spec.name is not a
|
||||
string. Patch by Oren Milman.
|
|
@ -103,6 +103,11 @@ _PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
|
|||
if (name_unicode == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (!PyUnicode_Check(name_unicode)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"spec.name must be a string");
|
||||
goto error;
|
||||
}
|
||||
|
||||
name = get_encoded_name(name_unicode, &hook_prefix);
|
||||
if (name == NULL) {
|
||||
|
|
Loading…
Reference in New Issue