mirror of https://github.com/python/cpython.git
While scalling sys.modules, skip entries that don't have string keys,
to protect us from jokers who put items with non-string keys in sys.modules. Reported by Greg Stein.
This commit is contained in:
parent
231c8c0895
commit
566373e974
|
@ -274,8 +274,8 @@ PyImport_Cleanup()
|
|||
while (PyDict_Next(modules, &pos, &key, &value)) {
|
||||
if (value->ob_refcnt != 1)
|
||||
continue;
|
||||
if (PyModule_Check(value)) {
|
||||
name = PyString_AsString(key);
|
||||
if (PyString_Check(key) && PyModule_Check(value)) {
|
||||
name = PyString_AS_STRING(key);
|
||||
if (strcmp(name, "__builtin__") == 0)
|
||||
continue;
|
||||
if (strcmp(name, "sys") == 0)
|
||||
|
@ -293,8 +293,8 @@ PyImport_Cleanup()
|
|||
/* Next, delete all modules (still skipping __builtin__ and sys) */
|
||||
pos = 0;
|
||||
while (PyDict_Next(modules, &pos, &key, &value)) {
|
||||
if (PyModule_Check(value)) {
|
||||
name = PyString_AsString(key);
|
||||
if (PyString_Check(key) && PyModule_Check(value)) {
|
||||
name = PyString_AS_STRING(key);
|
||||
if (strcmp(name, "__builtin__") == 0)
|
||||
continue;
|
||||
if (strcmp(name, "sys") == 0)
|
||||
|
|
Loading…
Reference in New Issue