mirror of
https://github.com/python/cpython.git
synced 2025-11-25 21:11:09 +00:00
PyPcre_expand(): Fixed two memory leaks, where a PyString_FromString()
was appended to a list. Lists are reference count neutral, so the string must be DECREF'd. Also added some checks for the return value of PyList_Append(). Note: there are still some memory problems reported by Purify (I get two Array Bounds Reads still and an Unitialized Memory Read). Also, in scanning the code, there appears to be some potential problems where return values aren't checked. To much to attack now though.
This commit is contained in:
parent
a61f4ac14d
commit
6aa42579be
1 changed files with 26 additions and 3 deletions
|
|
@ -489,8 +489,19 @@ PyPcre_expand(self, args)
|
|||
|
||||
if (start!=i)
|
||||
{
|
||||
PyList_Append(results,
|
||||
PyString_FromStringAndSize((char *)repl+start, i-start));
|
||||
int status;
|
||||
PyObject *s = PyString_FromStringAndSize(
|
||||
(char *)repl+start, i-start);
|
||||
if (s == NULL) {
|
||||
Py_DECREF(results);
|
||||
return NULL;
|
||||
}
|
||||
status = PyList_Append(results, s);
|
||||
Py_DECREF(s);
|
||||
if (status < 0) {
|
||||
Py_DECREF(results);
|
||||
return NULL;
|
||||
}
|
||||
total_len += i-start;
|
||||
}
|
||||
i++;
|
||||
|
|
@ -574,7 +585,19 @@ PyPcre_expand(self, args)
|
|||
|
||||
if (start!=i)
|
||||
{
|
||||
PyList_Append(results, PyString_FromStringAndSize((char *)repl+start, i-start));
|
||||
int status;
|
||||
PyObject *s = PyString_FromStringAndSize((char *)repl+start,
|
||||
i-start);
|
||||
if (s == NULL) {
|
||||
Py_DECREF(results);
|
||||
return NULL;
|
||||
}
|
||||
status = PyList_Append(results, s);
|
||||
Py_DECREF(s);
|
||||
if (status < 0) {
|
||||
Py_DECREF(results);
|
||||
return NULL;
|
||||
}
|
||||
total_len += i-start;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue