From: Serhiy Storchaka Date: Tue, 22 Jan 2013 13:54:48 +0000 (+0200) Subject: #15546: Fix GzipFile.peek()'s handling of pathological input data. X-Git-Tag: v3.2.4rc1~202 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc6e8aabf58d748369e0d3b08495ac35a67d2870;p=thirdparty%2FPython%2Fcpython.git #15546: Fix GzipFile.peek()'s handling of pathological input data. This is a backport of changeset 8c07ff7f882f. --- diff --git a/Lib/gzip.py b/Lib/gzip.py index 403040bd9c48..6aacc9a4f96c 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -367,8 +367,10 @@ class GzipFile(io.BufferedIOBase): if self.fileobj is None: return b'' try: - # 1024 is the same buffering heuristic used in read() - self._read(max(n, 1024)) + # Ensure that we don't return b"" if we haven't reached EOF. + while self.extrasize == 0: + # 1024 is the same buffering heuristic used in read() + self._read(max(n, 1024)) except EOFError: pass offset = self.offset - self.extrastart diff --git a/Misc/NEWS b/Misc/NEWS index a46bcc7183cc..c5cbdecab1c0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -466,6 +466,9 @@ Library - Issue #15424: Add a __sizeof__ implementation for array objects. Patch by Ludwig Hähne. +- Issue #15546: Fix handling of pathological input data in the peek() method + of the GzipFile class. + - Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'. Patch by Roger Serwy.