Issue #6083: Fix multiple segmentation faults occured when PyArg_ParseTuple

parses nested mutating sequence.
This commit is contained in:
Serhiy Storchaka 2013-02-04 12:54:04 +02:00
commit 1d0bb9c8f9
7 changed files with 118 additions and 15 deletions

View file

@ -218,10 +218,10 @@ partial_reduce(partialobject *pto, PyObject *unused)
}
static PyObject *
partial_setstate(partialobject *pto, PyObject *args)
partial_setstate(partialobject *pto, PyObject *state)
{
PyObject *fn, *fnargs, *kw, *dict;
if (!PyArg_ParseTuple(args, "(OOOO):__setstate__",
if (!PyArg_ParseTuple(state, "OOOO",
&fn, &fnargs, &kw, &dict))
return NULL;
Py_XDECREF(pto->fn);
@ -245,7 +245,7 @@ partial_setstate(partialobject *pto, PyObject *args)
static PyMethodDef partial_methods[] = {
{"__reduce__", (PyCFunction)partial_reduce, METH_NOARGS},
{"__setstate__", (PyCFunction)partial_setstate, METH_VARARGS},
{"__setstate__", (PyCFunction)partial_setstate, METH_O},
{NULL, NULL} /* sentinel */
};