#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 403040b..6aacc9a 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -367,8 +367,10 @@
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