mirror of https://github.com/python/cpython
Merged revisions 74189 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r74189 | amaury.forgeotdarc | 2009-07-23 21:26:02 +0200 (jeu., 23 juil. 2009) | 4 lines #6553: crash in cPickle.load(), when given a StringIO with incomplete data. Will backport to 2.6, 3.x already fixed a similar issue with issue4298. ........
This commit is contained in:
parent
ce28a01e35
commit
47ccf0cbba
|
@ -1,6 +1,7 @@
|
||||||
import unittest
|
import unittest
|
||||||
import pickle
|
import pickle
|
||||||
import cPickle
|
import cPickle
|
||||||
|
import StringIO
|
||||||
import pickletools
|
import pickletools
|
||||||
import copy_reg
|
import copy_reg
|
||||||
|
|
||||||
|
@ -1015,6 +1016,10 @@ class AbstractPickleModuleTests(unittest.TestCase):
|
||||||
self.module.Pickler(f, -1)
|
self.module.Pickler(f, -1)
|
||||||
self.module.Pickler(f, protocol=-1)
|
self.module.Pickler(f, protocol=-1)
|
||||||
|
|
||||||
|
def test_incomplete_input(self):
|
||||||
|
s = StringIO.StringIO("X''.")
|
||||||
|
self.assertRaises(EOFError, self.module.load, s)
|
||||||
|
|
||||||
class AbstractPersistentPicklerTests(unittest.TestCase):
|
class AbstractPersistentPicklerTests(unittest.TestCase):
|
||||||
|
|
||||||
# This class defines persistent_id() and persistent_load()
|
# This class defines persistent_id() and persistent_load()
|
||||||
|
|
|
@ -273,6 +273,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6553: Fixed a crash in cPickle.load(), when given a file-like object
|
||||||
|
containing incomplete data.
|
||||||
|
|
||||||
- Issue #2622: Fixed an ImportError when importing email.messsage from a
|
- Issue #2622: Fixed an ImportError when importing email.messsage from a
|
||||||
standalone application built with py2exe or py2app.
|
standalone application built with py2exe or py2app.
|
||||||
|
|
||||||
|
|
|
@ -663,6 +663,12 @@ read_other(Unpicklerobject *self, char **s, Py_ssize_t n)
|
||||||
self->last_string = str;
|
self->last_string = str;
|
||||||
|
|
||||||
if (! (*s = PyString_AsString(str))) return -1;
|
if (! (*s = PyString_AsString(str))) return -1;
|
||||||
|
|
||||||
|
if (PyString_GET_SIZE(str) != n) {
|
||||||
|
PyErr_SetNone(PyExc_EOFError);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue