gh-111089: PyUnicode_AsUTF8AndSize() sets size on error (#111106)

On error, PyUnicode_AsUTF8AndSize() now sets the size argument to -1,
to avoid undefined value.
This commit is contained in:
Victor Stinner 2023-10-20 20:03:11 +02:00 committed by GitHub
parent d8f32be5b6
commit f1e751e933
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 4 deletions

View file

@ -3820,17 +3820,24 @@ PyUnicode_AsUTF8AndSize(PyObject *unicode, Py_ssize_t *psize)
{
if (!PyUnicode_Check(unicode)) {
PyErr_BadArgument();
if (psize) {
*psize = -1;
}
return NULL;
}
if (PyUnicode_UTF8(unicode) == NULL) {
if (unicode_fill_utf8(unicode) == -1) {
if (psize) {
*psize = -1;
}
return NULL;
}
}
if (psize)
if (psize) {
*psize = PyUnicode_UTF8_LENGTH(unicode);
}
return PyUnicode_UTF8(unicode);
}