Kaydet (Commit) 8b2d713d authored tarafından Alexandre Vassalotti's avatar Alexandre Vassalotti

Issue 7128: Removed reference to the non-existent copyreg module.

The reference to copyreg was a unnoticed leftover from the compatibility
support for the grand renaming of the standard library in Python 3. The
compatibility support was reverted in r63493, but not completely as this
patch shows.

Based on a patch by Amaury Forgeot d'Arc.
üst 1d2c16db
...@@ -1091,6 +1091,16 @@ class AbstractPickleModuleTests(unittest.TestCase): ...@@ -1091,6 +1091,16 @@ class AbstractPickleModuleTests(unittest.TestCase):
s = StringIO.StringIO("X''.") s = StringIO.StringIO("X''.")
self.assertRaises(EOFError, self.module.load, s) self.assertRaises(EOFError, self.module.load, s)
def test_restricted(self):
# issue7128: cPickle failed in restricted mode
builtins = {self.module.__name__: self.module,
'__import__': __import__}
d = {}
teststr = "def f(): {0}.dumps(0)".format(self.module.__name__)
exec teststr in {'__builtins__': builtins}, d
d['f']()
class AbstractPersistentPicklerTests(unittest.TestCase): class AbstractPersistentPicklerTests(unittest.TestCase):
# This class defines persistent_id() and persistent_load() # This class defines persistent_id() and persistent_load()
......
...@@ -132,7 +132,7 @@ static PyObject *__class___str, *__getinitargs___str, *__dict___str, ...@@ -132,7 +132,7 @@ static PyObject *__class___str, *__getinitargs___str, *__dict___str,
*__reduce_ex___str, *__reduce_ex___str,
*write_str, *append_str, *write_str, *append_str,
*read_str, *readline_str, *__main___str, *read_str, *readline_str, *__main___str,
*copyreg_str, *dispatch_table_str; *dispatch_table_str;
/************************************************************************* /*************************************************************************
Internal Data type for pickle data. */ Internal Data type for pickle data. */
...@@ -3069,7 +3069,7 @@ newPicklerobject(PyObject *file, int proto) ...@@ -3069,7 +3069,7 @@ newPicklerobject(PyObject *file, int proto)
if (PyEval_GetRestricted()) { if (PyEval_GetRestricted()) {
/* Restricted execution, get private tables */ /* Restricted execution, get private tables */
PyObject *m = PyImport_Import(copyreg_str); PyObject *m = PyImport_ImportModule("copy_reg");
if (m == NULL) if (m == NULL)
goto err; goto err;
...@@ -5852,7 +5852,6 @@ init_stuff(PyObject *module_dict) ...@@ -5852,7 +5852,6 @@ init_stuff(PyObject *module_dict)
INIT_STR(append); INIT_STR(append);
INIT_STR(read); INIT_STR(read);
INIT_STR(readline); INIT_STR(readline);
INIT_STR(copyreg);
INIT_STR(dispatch_table); INIT_STR(dispatch_table);
if (!( copyreg = PyImport_ImportModule("copy_reg"))) if (!( copyreg = PyImport_ImportModule("copy_reg")))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment