mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #6697: Check that _PyUnicode_AsString() result is not NULL in typeobject
Type name and slots are already checked for surrogates somewhere else, but it's better to ensure that the result is not NULL.
This commit is contained in:
parent
8699950b04
commit
e5f99f398c
1 changed files with 12 additions and 2 deletions
|
@ -1347,8 +1347,14 @@ consistent method resolution\norder (MRO) for bases");
|
|||
i = 0;
|
||||
while (PyDict_Next(set, &i, &k, &v) && (size_t)off < sizeof(buf)) {
|
||||
PyObject *name = class_name(k);
|
||||
off += PyOS_snprintf(buf + off, sizeof(buf) - off, " %s",
|
||||
name ? _PyUnicode_AsString(name) : "?");
|
||||
char *name_str;
|
||||
if (name != NULL) {
|
||||
name_str = _PyUnicode_AsString(name);
|
||||
if (name_str == NULL)
|
||||
name_str = "?"
|
||||
} else
|
||||
name_str = "?"
|
||||
off += PyOS_snprintf(buf + off, sizeof(buf) - off, " %s", name_str);
|
||||
Py_XDECREF(name);
|
||||
if (--n && (size_t)(off+1) < sizeof(buf)) {
|
||||
buf[off++] = ',';
|
||||
|
@ -2220,6 +2226,10 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
|
|||
for (i = 0; i < nslots; i++, mp++) {
|
||||
mp->name = _PyUnicode_AsString(
|
||||
PyTuple_GET_ITEM(slots, i));
|
||||
if (mp->name == NULL) {
|
||||
Py_DECREF(type);
|
||||
return NULL;
|
||||
}
|
||||
mp->type = T_OBJECT_EX;
|
||||
mp->offset = slotoffset;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue