Add private _PyUnicode_AsUTF8NoNUL() function (GH-111957)

Like PyUnicode_AsUTF8(), but check for embedded null characters.
This commit is contained in:
Serhiy Storchaka 2023-11-10 21:31:36 +02:00 committed by GitHub
parent 3932b0f7b1
commit 771bd3c94a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 13 deletions

View file

@ -3847,6 +3847,18 @@ PyUnicode_AsUTF8(PyObject *unicode)
return PyUnicode_AsUTF8AndSize(unicode, NULL);
}
const char *
_PyUnicode_AsUTF8NoNUL(PyObject *unicode)
{
Py_ssize_t size;
const char *s = PyUnicode_AsUTF8AndSize(unicode, &size);
if (s && strlen(s) != (size_t)size) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
return NULL;
}
return s;
}
/*
PyUnicode_GetSize() has been deprecated since Python 3.3
because it returned length of Py_UNICODE.