Issue #23094: Fixed readline with frames in Python implementation of pickle.

This commit is contained in:
Serhiy Storchaka 2015-01-26 10:37:01 +02:00
parent 5106d044ec
commit 21d7533c4c
3 changed files with 11 additions and 1 deletions

View File

@ -242,7 +242,7 @@ class _Unframer:
if not data:
self.current_frame = None
return self.file_readline()
if data[-1] != b'\n':
if data[-1] != b'\n'[0]:
raise UnpicklingError(
"pickle exhausted before end of frame")
return data

View File

@ -1538,6 +1538,14 @@ class AbstractPickleTests(unittest.TestCase):
count_opcode(pickle.FRAME, pickled))
self.assertEqual(obj, self.loads(some_frames_pickle))
def test_frame_readline(self):
pickled = b'\x80\x04\x95\x05\x00\x00\x00\x00\x00\x00\x00I42\n.'
# 0: \x80 PROTO 4
# 2: \x95 FRAME 5
# 11: I INT 42
# 15: . STOP
self.assertEqual(self.loads(pickled), 42)
def test_nested_names(self):
global Nested
class Nested:

View File

@ -50,6 +50,8 @@ Core and Builtins
Library
-------
- Issue #23094: Fixed readline with frames in Python implementation of pickle.
- Issue #23268: Fixed bugs in the comparison of ipaddress classes.
- Issue #21408: Removed incorrect implementations of __ne__() which didn't