mirror of
https://github.com/python/cpython
synced 2026-09-29 10:35:30 +03:00
Add basic arg sanity checking to wrap_descr_get(). This is called
when Python code calls a descriptor's __get__ method. It should translate None to NULL in both argument positions, and insist that at least one of the argument positions is not NULL after this transformation.
This commit is contained in:
parent
ada859c111
commit
82ed25c15a
1 changed files with 9 additions and 0 deletions
|
|
@ -3433,6 +3433,15 @@ wrap_descr_get(PyObject *self, PyObject *args, void *wrapped)
|
|||
|
||||
if (!PyArg_ParseTuple(args, "O|O", &obj, &type))
|
||||
return NULL;
|
||||
if (obj == Py_None)
|
||||
obj = NULL;
|
||||
if (type == Py_None)
|
||||
type = NULL;
|
||||
if (type == NULL &&obj == NULL) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"__get__(None, None) is invalid");
|
||||
return NULL;
|
||||
}
|
||||
return (*func)(self, obj, type);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue