Kaydet (Commit) 577db2c9 authored tarafından Victor Stinner's avatar Victor Stinner

PyUnicode_AsUnicodeCopy() now checks if PyUnicode_AsUnicode() failed

üst d9c0631d
...@@ -13775,13 +13775,16 @@ Py_UNICODE* ...@@ -13775,13 +13775,16 @@ Py_UNICODE*
PyUnicode_AsUnicodeCopy(PyObject *object) PyUnicode_AsUnicodeCopy(PyObject *object)
{ {
PyUnicodeObject *unicode = (PyUnicodeObject *)object; PyUnicodeObject *unicode = (PyUnicodeObject *)object;
Py_UNICODE *copy; Py_UNICODE *u, *copy;
Py_ssize_t size; Py_ssize_t size;
if (!PyUnicode_Check(unicode)) { if (!PyUnicode_Check(unicode)) {
PyErr_BadArgument(); PyErr_BadArgument();
return NULL; return NULL;
} }
u = PyUnicode_AsUnicode(object);
if (u == NULL)
return NULL;
/* Ensure we won't overflow the size. */ /* Ensure we won't overflow the size. */
if (PyUnicode_GET_SIZE(unicode) > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) { if (PyUnicode_GET_SIZE(unicode) > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) {
PyErr_NoMemory(); PyErr_NoMemory();
...@@ -13794,7 +13797,7 @@ PyUnicode_AsUnicodeCopy(PyObject *object) ...@@ -13794,7 +13797,7 @@ PyUnicode_AsUnicodeCopy(PyObject *object)
PyErr_NoMemory(); PyErr_NoMemory();
return NULL; return NULL;
} }
memcpy(copy, PyUnicode_AS_UNICODE(unicode), size); memcpy(copy, u, size);
return copy; return copy;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment