]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-148651: Fix refcount leak in _zstd decompressor options (GH-148657) (#148691)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 17 Apr 2026 16:07:54 +0000 (18:07 +0200)
committerGitHub <noreply@github.com>
Fri, 17 Apr 2026 16:07:54 +0000 (16:07 +0000)
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 <michael.bommarito@gmail.com>
Misc/NEWS.d/next/Library/2026-04-16-13-30-00.gh-issue-148651.ZsTdLk.rst [new file with mode: 0644]
Modules/_zstd/decompressor.c

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 (file)
index 0000000..b69f94a
--- /dev/null
@@ -0,0 +1,2 @@
+Fix reference leak in :class:`compression.zstd.ZstdDecompressor` when an
+invalid option key is passed.
index bd78c2259900e530c2e9f26fab6ddcced2a1e76b..e5834308c6d8080944233bdc84818b83a38b7479 100644 (file)
@@ -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;
         }