Message361929
PyObject_GetAttrString(PyObject *v, const char *name)
typedef PyObject *(*getattrfunc)(PyObject *, char *)
The outer PyObject_GetAttrString takes a const char *name, but then casts away the const when calling the underlying tp_getattr. This means that an underlying function would be free to modify or free() the char* passed in to it, which might be, for example, a string literal, which would be a Bad Thing.
The setattr function pair has the same problem.
The API doc at https://docs.python.org/3/c-api/typeobj.html says that the tp_getattr and tp_setattr slots are deprecated. If they're not going away soon, I would think this should be addressed.
Fixing this in the cPython code by making tp_getattr and tp_setattr take const char * pointers would be simple. I don't have any idea how much outside code it would affect. |
|
Date |
User |
Action |
Args |
2020-02-13 03:23:38 | petdance | set | recipients:
+ petdance |
2020-02-13 03:23:38 | petdance | set | messageid: <1581564218.88.0.011311131475.issue39620@roundup.psfhosted.org> |
2020-02-13 03:23:38 | petdance | link | issue39620 messages |
2020-02-13 03:23:38 | petdance | create | |
|