mirror of https://github.com/python/cpython
check to make sure the attribute is a string (#14334)
This commit is contained in:
parent
3fb05a90ce
commit
16d84ac355
|
@ -4393,6 +4393,9 @@ order (MRO) for bases """
|
|||
|
||||
self.assertRaises(AttributeError, getattr, EvilGetattribute(), "attr")
|
||||
|
||||
def test_type___getattribute__(self):
|
||||
self.assertRaises(TypeError, type.__getattribute__, list, type)
|
||||
|
||||
def test_abstractmethods(self):
|
||||
# type pretends not to have __abstractmethods__.
|
||||
self.assertRaises(AttributeError, getattr, type, "__abstractmethods__")
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.2.4
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
|
||||
passed strings.
|
||||
|
||||
- Issue #1469629: Allow cycles through an object's __dict__ slot to be
|
||||
collected. (For example if ``x.__dict__ is x``).
|
||||
|
||||
|
|
|
@ -2462,6 +2462,13 @@ type_getattro(PyTypeObject *type, PyObject *name)
|
|||
PyObject *meta_attribute, *attribute;
|
||||
descrgetfunc meta_get;
|
||||
|
||||
if (!PyUnicode_Check(name)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"attribute name must be string, not '%.200s'",
|
||||
name->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Initialize this type (we'll assume the metatype is initialized) */
|
||||
if (type->tp_dict == NULL) {
|
||||
if (PyType_Ready(type) < 0)
|
||||
|
|
Loading…
Reference in New Issue