]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-41486: zlib uses an UINT32_MAX sliding window for the output buffer (GH-26143)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 5 Jul 2021 01:32:56 +0000 (18:32 -0700)
committerGitHub <noreply@github.com>
Mon, 5 Jul 2021 01:32:56 +0000 (18:32 -0700)
commit22bcc0768e0f7eda2ae4de63aef113b1ddb4ddef
tree06d33faea79d6660352188b88f8e07a48545ac7d
parent68330b681a4b63cedad58fcfd1d9573209bad21d
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
(cherry picked from commit a9a69bb3ea1e6cf54513717212aaeae0d61b24ee)

Co-authored-by: Ma Lin <animalize@users.noreply.github.com>
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