[Python-Dev] PyObject_IsInstance is dangerous

Serhiy Storchaka storchaka at gmail.com
Mon May 18 14:34:15 CEST 2015

On 18.05.15 15:14, Greg Ewing wrote:
> Serhiy Storchaka wrote:
>> PyObject_IsInstance is not safe when used to check if the object is an
>> instance of specified builtin type.
>> The __class__ attribute can be modified and PyObject_IsInstance() can
>> return true if the object has not layout compatible with specified
>> structure.
> Code that requires a particular C layout should be using
> PyObject_TypeCheck, not PyObject_IsInstance.

Thank you. I didn't know about this helper.

Looks as most (if not all) usages of PyObject_IsInstance are not 
correct. May be modify PyObject_IsInstance so that it will never return 
true if layouts are not compatible?

More information about the Python-Dev mailing list