[
https://issues.apache.org/jira/browse/MODPYTHON-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12465940
]
Graham Dumpleton commented on MODPYTHON-211:
--------------------------------------------
The req.readlines() function also leaks memory when invalid arguments are
supplied to the function. This is because of the code:
PyObject *result = PyList_New(0);
...
if (! PyArg_ParseTuple(args, "|l", &sizehint))
return NULL;
That is, it allocates a result array but doesn't destroy it when arguments
couldn't be decoded.
The result object isn't destroyed in a couple of other failure cases as well,
such as when rlargs can't be created or req.readline() sets an exception.
> Potential memory leak in req.readlines().
> -----------------------------------------
>
> Key: MODPYTHON-211
> URL: https://issues.apache.org/jira/browse/MODPYTHON-211
> Project: mod_python
> Issue Type: Bug
> Components: core
> Affects Versions: 3.3, 3.2.10
> Reporter: Graham Dumpleton
>
> This code in req.readlines() looks a bit fishy to me and possibly leaks
> memory. The code in question is:
> rlargs = PyTuple_New(0);
> if (result == NULL)
> return PyErr_NoMemory();
> line = req_readline(self, rlargs);
> while (line && ((linesize=PyString_Size(line))>0)) {
> PyList_Append(result, line);
> size += linesize;
> if ((sizehint != -1) && (size >= sizehint))
> break;
> Py_DECREF(line);
> line = req_readline(self, args);
> }
> Py_XDECREF(line);
> The thing that looks wrong is 'rlargs'. This is created, used in a sub call
> to req_readline() but then never destroyed. Thus, possibly a memory leak.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira