diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2005-11-22 15:32:28 (GMT) |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2005-11-22 15:32:28 (GMT) |
commit | bb7e800506c5d27c9105bc47b09ac368dddb4492 (patch) | |
tree | 56a9dc2b46da91e29afce8ce51d208bc73864427 | |
parent | b2a739d19b53af948ffe4bc1d4cd03e6ab70928c (diff) | |
download | cpython-bb7e800506c5d27c9105bc47b09ac368dddb4492.zip cpython-bb7e800506c5d27c9105bc47b09ac368dddb4492.tar.gz cpython-bb7e800506c5d27c9105bc47b09ac368dddb4492.tar.bz2 |
[Patch #1350573] zlib.crc32 doesn't handle 0xffffffff seed. Add tests and bugfix. Bug reported by John Schmidt; bugfix by Danny Yoo.
-rw-r--r-- | Lib/test/test_zlib.py | 2 | ||||
-rw-r--r-- | Modules/zlibmodule.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index e91184e..7634680 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -24,6 +24,7 @@ class ChecksumTestCase(unittest.TestCase): # checksum test cases def test_crc32start(self): self.assertEqual(zlib.crc32(""), zlib.crc32("", 0)) + self.assert_(zlib.crc32("abc", 0xffffffff)) def test_crc32empty(self): self.assertEqual(zlib.crc32("", 0), 0) @@ -32,6 +33,7 @@ class ChecksumTestCase(unittest.TestCase): def test_adler32start(self): self.assertEqual(zlib.adler32(""), zlib.adler32("", 1)) + self.assert_(zlib.adler32("abc", 0xffffffff)) def test_adler32empty(self): self.assertEqual(zlib.adler32("", 0), 0) diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index c3238a0..a598ae3 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -778,7 +778,7 @@ PyZlib_adler32(PyObject *self, PyObject *args) Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:adler32", &buf, &len, &adler32val)) + if (!PyArg_ParseTuple(args, "s#|k:adler32", &buf, &len, &adler32val)) return NULL; adler32val = adler32(adler32val, buf, len); return PyInt_FromLong(adler32val); @@ -796,7 +796,7 @@ PyZlib_crc32(PyObject *self, PyObject *args) uLong crc32val = crc32(0L, Z_NULL, 0); Byte *buf; int len; - if (!PyArg_ParseTuple(args, "s#|l:crc32", &buf, &len, &crc32val)) + if (!PyArg_ParseTuple(args, "s#|k:crc32", &buf, &len, &crc32val)) return NULL; crc32val = crc32(crc32val, buf, len); return PyInt_FromLong(crc32val); |