Commit a6df938f authored by Serhiy Storchaka's avatar Serhiy Storchaka

Close #17666: Fix reading gzip files with an extra field.

parent cf86d944
...@@ -280,7 +280,8 @@ class GzipFile(io.BufferedIOBase): ...@@ -280,7 +280,8 @@ class GzipFile(io.BufferedIOBase):
if flag & FEXTRA: if flag & FEXTRA:
# Read & discard the extra field, if present # Read & discard the extra field, if present
self._read_exact(struct.unpack("<H", self._read_exact(2))) extra_len, = struct.unpack("<H", self._read_exact(2))
self._read_exact(extra_len)
if flag & FNAME: if flag & FNAME:
# Read and discard a null-terminated string containing the filename # Read and discard a null-terminated string containing the filename
while True: while True:
......
...@@ -379,6 +379,13 @@ class TestGzip(unittest.TestCase): ...@@ -379,6 +379,13 @@ class TestGzip(unittest.TestCase):
with gzip.GzipFile(fileobj=io.BytesIO(truncated[:i])) as f: with gzip.GzipFile(fileobj=io.BytesIO(truncated[:i])) as f:
self.assertRaises(EOFError, f.read, 1) self.assertRaises(EOFError, f.read, 1)
def test_read_with_extra(self):
# Gzip data with an extra field
gzdata = (b'\x1f\x8b\x08\x04\xb2\x17cQ\x02\xff'
b'\x05\x00Extra'
b'\x0bI-.\x01\x002\xd1Mx\x04\x00\x00\x00')
with gzip.GzipFile(fileobj=io.BytesIO(gzdata)) as f:
self.assertEqual(f.read(), b'Test')
def test_main(verbose=None): def test_main(verbose=None):
support.run_unittest(TestGzip) support.run_unittest(TestGzip)
......
...@@ -2,18 +2,29 @@ ...@@ -2,18 +2,29 @@
Python News Python News
+++++++++++ +++++++++++
What's New in Python 3.2.4? What's New in Python 3.2.5?
=========================== ===========================
*Release date: 07-Apr-2013* *Release date: 13-May-2013*
Library Library
------- -------
- Issue #17192: Restore the patch for Issue #11729 and Issue #10309 - Issue #17192: Restore the patch for Issue #11729 and Issue #10309
which were ommitted in 3.2.4 when updating the bundled version of which were omitted in 3.2.4 when updating the bundled version of
libffi used by ctypes. libffi used by ctypes.
- Issue #17666: Fix reading gzip files with an extra field.
What's New in Python 3.2.4?
===========================
*Release date: 07-Apr-2013*
Library
-------
- Issue #17625: In IDLE, close the replace dialog after it is used. - Issue #17625: In IDLE, close the replace dialog after it is used.
......
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