From a2e2f16d792e05b2d125994072172144eb3f67de Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Sun, 21 Oct 2018 06:26:45 -0600 Subject: [PATCH 1/2] Fix a possible memory leak in winreg.c --- PC/winreg.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PC/winreg.c b/PC/winreg.c index 78864b1a69cfe9..e3d066fafc9722 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -651,8 +651,10 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) t = PyList_GET_ITEM(value, j); wstr = PyUnicode_AsUnicodeAndSize(t, &len); - if (wstr == NULL) + if (wstr == NULL) { + PyMem_FREE(*retDataBuf); return FALSE; + } wcscpy(P, wstr); P += (len + 1); } From f89886ff076f58fc410bb2c7cd9af6044eec5f81 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Thu, 1 Nov 2018 12:38:37 -0600 Subject: [PATCH 2/2] Replace the check with an assertion. --- PC/winreg.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/PC/winreg.c b/PC/winreg.c index e3d066fafc9722..0198097a1c929f 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -651,10 +651,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) t = PyList_GET_ITEM(value, j); wstr = PyUnicode_AsUnicodeAndSize(t, &len); - if (wstr == NULL) { - PyMem_FREE(*retDataBuf); - return FALSE; - } + assert(wstr); wcscpy(P, wstr); P += (len + 1); }