https://github.com/python/cpython/commit/7f6a0c377b1724c3e704ea6ed854721ea8d03620 commit: 7f6a0c377b1724c3e704ea6ed854721ea8d03620 branch: 3.14 author: Miss Islington (bot) <[email protected]> committer: emmatyping <[email protected]> date: 2026-04-17T16:07:54Z summary:
[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 <[email protected]> files: A Misc/NEWS.d/next/Library/2026-04-16-13-30-00.gh-issue-148651.ZsTdLk.rst M 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 index 00000000000000..b69f94a17663dc --- /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 bd78c2259900e5..e5834308c6d808 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; } _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
