[ 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