]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
closes bpo-41533: Fix a potential memory leak when allocating a stack (GH-21847)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 4 Sep 2020 22:56:04 +0000 (15:56 -0700)
committerGitHub <noreply@github.com>
Fri, 4 Sep 2020 22:56:04 +0000 (15:56 -0700)
Free the stack allocated in va_build_stack if do_mkstack fails
and the stack is not a small_stack
(cherry picked from commit 75c80b0bda89debf312f075716b8c467d411f90e)

Co-authored-by: Tony Solomonik <tony.solomonik@gmail.com>
Misc/NEWS.d/next/Core and Builtins/2020-08-12-20-29-57.bpo-41533.4pcVAc.rst [new file with mode: 0644]
Python/modsupport.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-08-12-20-29-57.bpo-41533.4pcVAc.rst b/Misc/NEWS.d/next/Core and Builtins/2020-08-12-20-29-57.bpo-41533.4pcVAc.rst
new file mode 100644 (file)
index 0000000..e166f0c
--- /dev/null
@@ -0,0 +1,2 @@
+Free the stack allocated in ``va_build_stack`` if ``do_mkstack`` fails and
+the stack is not a ``small_stack``.
index 845bdcb2b6f1b3dfa531bd9d24e2f469a7398fdc..13482c65083ffa75ec6bd2184938adbea826b768 100644 (file)
@@ -619,6 +619,9 @@ va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len,
     va_end(lva);
 
     if (res < 0) {
+        if (stack != small_stack) {
+            PyMem_Free(stack);
+        }
         return NULL;
     }