]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-41486: zlib uses an UINT32_MAX sliding window for the output buffer (GH-26143)
authorMa Lin <animalize@users.noreply.github.com>
Mon, 5 Jul 2021 01:10:44 +0000 (09:10 +0800)
committerGitHub <noreply@github.com>
Mon, 5 Jul 2021 01:10:44 +0000 (18:10 -0700)
commita9a69bb3ea1e6cf54513717212aaeae0d61b24ee
tree4e3fd9a92c86fb3384be26c29c57323ebafdd1c2
parent5644c7b3ffd49bed58dc095be6e6148e0bb4431e
bpo-41486: zlib uses an UINT32_MAX sliding window for the output buffer (GH-26143)

* zlib uses an UINT32_MAX sliding window for the output buffer

These funtions have an initial output buffer size parameter:
- zlib.decompress(data, /, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)
- zlib.Decompress.flush([length])

If the initial size > UINT32_MAX, use an UINT32_MAX sliding window, instead of clamping to UINT32_MAX.
Speed up when (the initial size == the actual size).

This fixes a memory consumption and copying performance regression in earlier 3.10 beta releases if someone used an output buffer larger than 4GiB with zlib.decompress.

Reviewed-by: Gregory P. Smith
Misc/NEWS.d/next/Core and Builtins/2021-07-04-17-41-47.bpo-41486.DiM24a.rst [new file with mode: 0644]
Modules/zlibmodule.c