You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2007/01/19 03:09:29 UTC
[jira] Commented: (MODPYTHON-211) Potential memory leak in
req.readlines().
[ 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