classification
Title: winreg.c:Reg2Py() may leak memory (in unusual circumstances)
Type: resource usage Stage: needs patch
Components: Windows Versions: Python 3.2, Python 3.1, Python 2.7, Python 2.6
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: stutzbach Nosy List: brian.curtin, stutzbach
Priority: low Keywords:

Created on 2010-07-07 17:52 by stutzbach, last changed 2010-07-07 18:20 by brian.curtin.

Messages (1)
msg109486 - (view) Author: Daniel Stutzbach (stutzbach) (Python committer) Date: 2010-07-07 17:52
In Reg2Py() in winreg.c, in the REG_MULTI_SZ case, there's the following:

                wchar_t **str = (wchar_t **)malloc(sizeof(wchar_t *)*s);
                if (str == NULL)
                    return PyErr_NoMemory();

However, not all of the return paths after that point call free(str).

The leaking paths are pretty unusual, so I'm setting the priority to low.  The leaking paths occur when PyList_New returns NULL or if the registry entry contains more than INT_MAX characters.

Two other things I noticed and I'm not sure about:

Is INT_MAX really the maximum number of characters for a Python unicode string?

Should this be using PyMem functions instead of malloc/free?
History
Date User Action Args
2010-07-07 18:20:26brian.curtinsetnosy: + brian.curtin
2010-07-07 17:52:44stutzbachcreate