diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2005-06-09 14:19:32 (GMT) |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2005-06-09 14:19:32 (GMT) |
commit | 01cb47b59c434ff51d272b9399c7806bd6b1c0e9 (patch) | |
tree | 276a300278d70d8acc8fe1b51ec9a7eb10731b31 /Lib/gzip.py | |
parent | a6f68e1b1fbde7f2fbc53e4324e643278bbd5f12 (diff) | |
download | cpython-01cb47b59c434ff51d272b9399c7806bd6b1c0e9.zip cpython-01cb47b59c434ff51d272b9399c7806bd6b1c0e9.tar.gz cpython-01cb47b59c434ff51d272b9399c7806bd6b1c0e9.tar.bz2 |
[Bug #1074261, patch #1074381] Restrict the size of chunks read from the file in order to avoid overflow or huge memory consumption. Patch by Mark Eichin
Diffstat (limited to 'Lib/gzip.py')
-rw-r--r-- | Lib/gzip.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index 4ecd211..3c1ebf2 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -55,6 +55,7 @@ class GzipFile: """ myfileobj = None + max_read_chunk = 10 * 1024 * 1024 # 10Mb def __init__(self, filename=None, mode=None, compresslevel=9, fileobj=None): @@ -215,14 +216,14 @@ class GzipFile: try: while True: self._read(readsize) - readsize = readsize * 2 + readsize = min(self.max_read_chunk, readsize * 2) except EOFError: size = self.extrasize else: # just get some more of it try: while size > self.extrasize: self._read(readsize) - readsize = readsize * 2 + readsize = min(self.max_read_chunk, readsize * 2) except EOFError: if size > self.extrasize: size = self.extrasize |