From 5d3553b0a8959e7505bbec4de03077dbf135ee4b Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Sun, 3 Jan 2021 05:18:25 -0700 Subject: [PATCH] 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(). --- .../Core and Builtins/2021-01-03-04-41-25.bpo-42814.sDvVbb.rst | 1 + Objects/genericaliasobject.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-01-03-04-41-25.bpo-42814.sDvVbb.rst 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 00000000000..6978c36f98c --- /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 4cc82ffcdf3..8fae83b2729 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; }