[Python-checkins] gh-101322: Ensure test_zlib.ZlibDecompressorTest runs, fix errors in ZlibDecompressor (#101323)

gpshead webhook-mailer at python.org
Sat Feb 4 15:07:36 EST 2023


https://github.com/python/cpython/commit/a89e6713c4de99d4be5a1304b134e57a24ab10ac
commit: a89e6713c4de99d4be5a1304b134e57a24ab10ac
branch: main
author: Ruben Vorderman <r.h.p.vorderman at lumc.nl>
committer: gpshead <greg at krypto.org>
date: 2023-02-04T12:07:30-08:00
summary:

gh-101322: Ensure test_zlib.ZlibDecompressorTest runs, fix errors in ZlibDecompressor (#101323)

* Ensure test_zlib.ZlibDecompressorTest actually runs, fix errors in ZlibDecompressor.

files:
A Misc/NEWS.d/next/Library/2023-01-26-06-44-35.gh-issue-101323.h8Hk11.rst
M Lib/test/test_zlib.py
M Modules/zlibmodule.c

diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
index ae54f6c46891..3dac70eb1285 100644
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -944,13 +944,18 @@ def choose_lines(source, number, seed=None, generator=random):
 """
 
 
-class ZlibDecompressorTest():
+class ZlibDecompressorTest(unittest.TestCase):
     # Test adopted from test_bz2.py
     TEXT = HAMLET_SCENE
     DATA = zlib.compress(HAMLET_SCENE)
     BAD_DATA = b"Not a valid deflate block"
+    BIG_TEXT = DATA * ((128 * 1024 // len(DATA)) + 1)
+    BIG_DATA = zlib.compress(BIG_TEXT)
+
     def test_Constructor(self):
-        self.assertRaises(TypeError, zlib._ZlibDecompressor, 42)
+        self.assertRaises(TypeError, zlib._ZlibDecompressor, "ASDA")
+        self.assertRaises(TypeError, zlib._ZlibDecompressor, -15, "notbytes")
+        self.assertRaises(TypeError, zlib._ZlibDecompressor, -15, b"bytes", 5)
 
     def testDecompress(self):
         zlibd = zlib._ZlibDecompressor()
diff --git a/Misc/NEWS.d/next/Library/2023-01-26-06-44-35.gh-issue-101323.h8Hk11.rst b/Misc/NEWS.d/next/Library/2023-01-26-06-44-35.gh-issue-101323.h8Hk11.rst
new file mode 100644
index 000000000000..f8419e130dbc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-01-26-06-44-35.gh-issue-101323.h8Hk11.rst
@@ -0,0 +1,2 @@
+Fix a bug where errors where not thrown by zlib._ZlibDecompressor if
+encountered during decompressing.
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 1cdfd0132028..e2f7dbaca87a 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -1519,6 +1519,7 @@ decompress_buf(ZlibDecompressor *self, Py_ssize_t max_length)
         }
     } else if (err != Z_OK && err != Z_BUF_ERROR) {
         zlib_error(state, self->zst, err, "while decompressing data");
+        goto error;
     }
 
     self->avail_in_real += self->zst.avail_in;



More information about the Python-checkins mailing list