mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
This commit is contained in:
parent
1b2bd3b348
commit
e239d23e8c
13 changed files with 144 additions and 78 deletions
|
@ -792,6 +792,11 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
|
|||
}
|
||||
}
|
||||
temp_str = _PyUnicode_AsStringAndSize(temp, &len);
|
||||
if (temp_str == NULL) {
|
||||
Py_DECREF(temp);
|
||||
Py_XDECREF(elem);
|
||||
return 0;
|
||||
}
|
||||
strn = (char *)PyObject_MALLOC(len + 1);
|
||||
if (strn != NULL)
|
||||
(void) memcpy(strn, temp_str, len + 1);
|
||||
|
@ -870,6 +875,8 @@ build_node_tree(PyObject *tuple)
|
|||
encoding = PySequence_GetItem(tuple, 2);
|
||||
/* tuple isn't borrowed anymore here, need to DECREF */
|
||||
tuple = PySequence_GetSlice(tuple, 0, 2);
|
||||
if (tuple == NULL)
|
||||
return NULL;
|
||||
}
|
||||
res = PyNode_New(num);
|
||||
if (res != NULL) {
|
||||
|
@ -881,6 +888,12 @@ build_node_tree(PyObject *tuple)
|
|||
Py_ssize_t len;
|
||||
const char *temp;
|
||||
temp = _PyUnicode_AsStringAndSize(encoding, &len);
|
||||
if (temp == NULL) {
|
||||
Py_DECREF(res);
|
||||
Py_DECREF(encoding);
|
||||
Py_DECREF(tuple);
|
||||
return NULL;
|
||||
}
|
||||
res->n_str = (char *)PyObject_MALLOC(len + 1);
|
||||
if (res->n_str != NULL && temp != NULL)
|
||||
(void) memcpy(res->n_str, temp, len + 1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue