From: Zackery Spytz Date: Sun, 3 Jan 2021 12:18:25 +0000 (-0700) Subject: bpo-42814: Fix undefined behavior in Objects/genericaliasobject.c (GH-24073) X-Git-Tag: v3.10.0a4~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5d3553b0a8959e7505bbec4de03077dbf135ee4b;p=thirdparty%2FPython%2Fcpython.git bpo-42814: Fix undefined behavior in Objects/genericaliasobject.c (GH-24073) In is_typing_name(), va_end() is not always called before the function returns. It is undefined behavior to call va_start() without also calling va_end(). --- diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-01-03-04-41-25.bpo-42814.sDvVbb.rst b/Misc/NEWS.d/next/Core and Builtins/2021-01-03-04-41-25.bpo-42814.sDvVbb.rst new file mode 100644 index 000000000000..6978c36f98c9 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-01-03-04-41-25.bpo-42814.sDvVbb.rst @@ -0,0 +1 @@ +Fix undefined behavior in ``Objects/genericaliasobject.c``. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 4cc82ffcdf39..8fae83b27297 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -173,6 +173,7 @@ is_typing_name(PyObject *obj, int num, ...) break; } } + va_end(names); if (!hit) { return 0; } @@ -184,7 +185,6 @@ is_typing_name(PyObject *obj, int num, ...) && _PyUnicode_EqualToASCIIString(module, "typing"); Py_DECREF(module); - va_end(names); return res; }