mirror of
https://github.com/python/cpython.git
synced 2026-01-04 14:32:21 +00:00
gh-111178: fix UBSan failures in Objects/descrobject.c (GH-128245)
fix UBSan failures for `propertyobject`
This commit is contained in:
parent
8d15058d61
commit
1ef6bf4e29
1 changed files with 10 additions and 7 deletions
|
|
@ -1508,6 +1508,8 @@ PyWrapper_New(PyObject *d, PyObject *self)
|
|||
|
||||
/* A built-in 'property' type */
|
||||
|
||||
#define _propertyobject_CAST(op) ((propertyobject *)(op))
|
||||
|
||||
/*
|
||||
class property(object):
|
||||
|
||||
|
|
@ -1911,8 +1913,9 @@ property_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
property_get__name__(propertyobject *prop, void *Py_UNUSED(ignored))
|
||||
property_get__name__(PyObject *op, void *Py_UNUSED(ignored))
|
||||
{
|
||||
propertyobject *prop = _propertyobject_CAST(op);
|
||||
PyObject *name;
|
||||
if (property_name(prop, &name) < 0) {
|
||||
return NULL;
|
||||
|
|
@ -1925,16 +1928,17 @@ property_get__name__(propertyobject *prop, void *Py_UNUSED(ignored))
|
|||
}
|
||||
|
||||
static int
|
||||
property_set__name__(propertyobject *prop, PyObject *value,
|
||||
void *Py_UNUSED(ignored))
|
||||
property_set__name__(PyObject *op, PyObject *value, void *Py_UNUSED(ignored))
|
||||
{
|
||||
propertyobject *prop = _propertyobject_CAST(op);
|
||||
Py_XSETREF(prop->prop_name, Py_XNewRef(value));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
property_get___isabstractmethod__(propertyobject *prop, void *closure)
|
||||
property_get___isabstractmethod__(PyObject *op, void *closure)
|
||||
{
|
||||
propertyobject *prop = _propertyobject_CAST(op);
|
||||
int res = _PyObject_IsAbstract(prop->prop_get);
|
||||
if (res == -1) {
|
||||
return NULL;
|
||||
|
|
@ -1962,9 +1966,8 @@ property_get___isabstractmethod__(propertyobject *prop, void *closure)
|
|||
}
|
||||
|
||||
static PyGetSetDef property_getsetlist[] = {
|
||||
{"__name__", (getter)property_get__name__, (setter)property_set__name__},
|
||||
{"__isabstractmethod__",
|
||||
(getter)property_get___isabstractmethod__, NULL,
|
||||
{"__name__", property_get__name__, property_set__name__, NULL, NULL},
|
||||
{"__isabstractmethod__", property_get___isabstractmethod__, NULL,
|
||||
NULL,
|
||||
NULL},
|
||||
{NULL} /* Sentinel */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue