]> granicus.if.org Git - python/commitdiff
Merged revisions 76499 via svnmerge from
authorAlexandre Vassalotti <alexandre@peadrop.com>
Tue, 24 Nov 2009 18:06:51 +0000 (18:06 +0000)
committerAlexandre Vassalotti <alexandre@peadrop.com>
Tue, 24 Nov 2009 18:06:51 +0000 (18:06 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76499 | alexandre.vassalotti | 2009-11-24 12:53:23 -0500 (Tue, 24 Nov 2009) | 9 lines

  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.
........

Lib/test/pickletester.py
Modules/cPickle.c

index 73ca92696504084f3515b9a2a8ae0334c2a71bd8..c22085ad5c5cb065333dfc5100a33068dc97cae5 100644 (file)
@@ -1020,6 +1020,16 @@ class AbstractPickleModuleTests(unittest.TestCase):
         s = StringIO.StringIO("X''.")
         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):
 
     # This class defines persistent_id() and persistent_load()
index 8fa4a66c3658baede6a0d11c06c540360a41a229..4e53ae6722714dd075b6ae82d13d660880814e87 100644 (file)
@@ -132,7 +132,7 @@ static PyObject *__class___str, *__getinitargs___str, *__dict___str,
   *__reduce_ex___str,
   *write_str, *append_str,
   *read_str, *readline_str, *__main___str, 
-  *copyreg_str, *dispatch_table_str;
+  *dispatch_table_str;
 
 /*************************************************************************
  Internal Data type for pickle data.                                     */
@@ -2985,7 +2985,7 @@ newPicklerobject(PyObject *file, int proto)
 
        if (PyEval_GetRestricted()) {
                /* Restricted execution, get private tables */
-               PyObject *m = PyImport_Import(copyreg_str);
+               PyObject *m = PyImport_ImportModule("copy_reg");
 
                if (m == NULL)
                        goto err;
@@ -5733,7 +5733,6 @@ init_stuff(PyObject *module_dict)
        INIT_STR(append);
        INIT_STR(read);
        INIT_STR(readline);
-       INIT_STR(copyreg);
        INIT_STR(dispatch_table);
 
        if (!( copyreg = PyImport_ImportModule("copy_reg")))