From: Barry Warsaw Date: Thu, 29 May 2003 15:13:18 +0000 (+0000) Subject: Backport patch 2.206: X-Git-Tag: v2.2.3~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1345877de629406d1490de712baeb9c68af3ae52;p=thirdparty%2FPython%2Fcpython.git Backport patch 2.206: ---------------------------- revision 2.206 date: 2003/02/11 16:25:43; author: gvanrossum; state: Exp; lines: +9 -0 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. ---------------------------- which fixes SF bug # 736892, forcing function to act like an unbound method dumps core. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index a150f5d5e499..45c95793c14e 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2749,6 +2749,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); }