From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 17 Apr 2026 16:07:54 +0000 (+0200) Subject: [3.14] gh-148651: Fix refcount leak in _zstd decompressor options (GH-148657) (#148691) X-Git-Tag: v3.14.5rc1~81 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f6a0c377b1724c3e704ea6ed854721ea8d03620;p=thirdparty%2FPython%2Fcpython.git [3.14] gh-148651: Fix refcount leak in _zstd decompressor options (GH-148657) (#148691) gh-148651: Fix refcount leak in _zstd decompressor options (GH-148657) The option parsing in Modules/_zstd/decompressor.c had a missing Py_DECREF(value) before the early return -1 when PyLong_AsInt(key) fails. The identical code in Modules/_zstd/compressor.c line 158 has the fix. (cherry picked from commit 446edda20919447fdc8b5a43f2f2ae686df82e6a) Co-authored-by: Michael Bommarito --- diff --git a/Misc/NEWS.d/next/Library/2026-04-16-13-30-00.gh-issue-148651.ZsTdLk.rst b/Misc/NEWS.d/next/Library/2026-04-16-13-30-00.gh-issue-148651.ZsTdLk.rst new file mode 100644 index 000000000000..b69f94a17663 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-04-16-13-30-00.gh-issue-148651.ZsTdLk.rst @@ -0,0 +1,2 @@ +Fix reference leak in :class:`compression.zstd.ZstdDecompressor` when an +invalid option key is passed. diff --git a/Modules/_zstd/decompressor.c b/Modules/_zstd/decompressor.c index bd78c2259900..e5834308c6d8 100644 --- a/Modules/_zstd/decompressor.c +++ b/Modules/_zstd/decompressor.c @@ -111,6 +111,7 @@ _zstd_set_d_parameters(ZstdDecompressor *self, PyObject *options) int key_v = PyLong_AsInt(key); Py_DECREF(key); if (key_v == -1 && PyErr_Occurred()) { + Py_DECREF(value); return -1; }