As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size.
- Raise an exception if the *unicode* string contains embedded null
- characters. To accept embedded null characters and truncate on purpose
- at the first null byte, ``PyUnicode_AsUTF8AndSize(unicode, NULL)`` can be
- used instead.
-
.. versionadded:: 3.3
.. versionchanged:: 3.7
The return type is now ``const char *`` rather of ``char *``.
- .. versionchanged:: 3.13
- Raise an exception if the string contains embedded null characters.
-
UTF-32 Codecs
"""""""""""""
function,PyUnicode_AsUCS4Copy,3.7,,
function,PyUnicode_AsUTF16String,3.2,,
function,PyUnicode_AsUTF32String,3.2,,
-function,PyUnicode_AsUTF8,3.13,,
function,PyUnicode_AsUTF8AndSize,3.10,,
function,PyUnicode_AsUTF8String,3.2,,
function,PyUnicode_AsUnicodeEscapeString,3.2,,
:c:func:`PyErr_WriteUnraisable`, but allow to customize the warning mesage.
(Contributed by Serhiy Storchaka in :gh:`108082`.)
-* Add :c:func:`PyUnicode_AsUTF8` function to the limited C API.
- (Contributed by Victor Stinner in :gh:`111089`.)
-
Porting to Python 3.13
----------------------
Note that ``Py_TRASHCAN_BEGIN`` has a second argument which
should be the deallocation function it is in.
-* The :c:func:`PyUnicode_AsUTF8` function now raises an exception if the string
- contains embedded null characters. To accept embedded null characters and
- truncate on purpose at the first null byte,
- ``PyUnicode_AsUTF8AndSize(unicode, NULL)`` can be used instead.
- (Contributed by Victor Stinner in :gh:`111089`.)
-
* On Windows, ``Python.h`` no longer includes the ``<stddef.h>`` standard
header file. If needed, it should now be included explicitly. For example, it
provides ``offsetof()`` function, and ``size_t`` and ``ptrdiff_t`` types.
const void *buffer,
Py_ssize_t size);
+/* --- Manage the default encoding ---------------------------------------- */
+
+/* Returns a pointer to the default encoding (UTF-8) of the
+ Unicode object unicode.
+
+ Like PyUnicode_AsUTF8AndSize(), this also caches the UTF-8 representation
+ in the unicodeobject.
+
+ _PyUnicode_AsString is a #define for PyUnicode_AsUTF8 to
+ support the previous internal function with the same behaviour.
+
+ Use of this API is DEPRECATED since no size information can be
+ extracted from the returned data.
+*/
+
+PyAPI_FUNC(const char *) PyUnicode_AsUTF8(PyObject *unicode);
/* === Characters Type APIs =============================================== */
PyObject *unicode /* Unicode object */
);
-// Returns a pointer to the UTF-8 encoding of the Unicode object unicode.
-//
-// Raise an exception if the string contains embedded null characters.
-// Use PyUnicode_AsUTF8AndSize() to accept embedded null characters.
-//
-// This function caches the UTF-8 encoded string in the Unicode object
-// and subsequent calls will return the same string. The memory is released
-// when the Unicode object is deallocated.
-PyAPI_FUNC(const char *) PyUnicode_AsUTF8(PyObject *unicode);
-
-// Returns a pointer to the UTF-8 encoding of the
-// Unicode object unicode and the size of the encoded representation
-// in bytes stored in `*size` (if size is not NULL).
-//
-// On error, `*size` is set to 0 (if size is not NULL).
-//
-// This function caches the UTF-8 encoded string in the Unicode object
-// and subsequent calls will return the same string. The memory is released
-// when the Unicode object is deallocated.
+/* Returns a pointer to the default encoding (UTF-8) of the
+ Unicode object unicode and the size of the encoded representation
+ in bytes stored in *size.
+
+ In case of an error, no *size is set.
+
+ This function caches the UTF-8 encoded string in the unicodeobject
+ and subsequent calls will return the same string. The memory is released
+ when the unicodeobject is deallocated.
+*/
+
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000
PyAPI_FUNC(const char *) PyUnicode_AsUTF8AndSize(
PyObject *unicode,
self.assertEqual(unicode_asutf8('abc', 4), b'abc\0')
self.assertEqual(unicode_asutf8('абв', 7), b'\xd0\xb0\xd0\xb1\xd0\xb2\0')
self.assertEqual(unicode_asutf8('\U0001f600', 5), b'\xf0\x9f\x98\x80\0')
-
- # disallow embedded null characters
- self.assertRaises(ValueError, unicode_asutf8, 'abc\0', 0)
- self.assertRaises(ValueError, unicode_asutf8, 'abc\0def', 0)
+ self.assertEqual(unicode_asutf8('abc\0def', 8), b'abc\0def\0')
self.assertRaises(UnicodeEncodeError, unicode_asutf8, '\ud8ff', 0)
self.assertRaises(TypeError, unicode_asutf8, b'abc', 0)
"PyUnicode_AsUCS4Copy",
"PyUnicode_AsUTF16String",
"PyUnicode_AsUTF32String",
- "PyUnicode_AsUTF8",
"PyUnicode_AsUTF8AndSize",
"PyUnicode_AsUTF8String",
"PyUnicode_AsUnicodeEscapeString",
+++ /dev/null
-The :c:func:`PyUnicode_AsUTF8` function now raises an exception if the
-string contains embedded null characters. Patch by Victor Stinner.
+++ /dev/null
-Add :c:func:`PyUnicode_AsUTF8` function to the limited C API. Patch by
-Victor Stinner.
added = '3.13'
[function.PySys_AuditTuple]
added = '3.13'
-[function.PyUnicode_AsUTF8]
- added = '3.13'
[function._Py_SetRefcnt]
added = '3.13'
abi_only = true
_PyArg_BadArgument("open", "argument 'mode'", "str", args[1]);
goto exit;
}
- mode = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t mode_length;
+ mode = PyUnicode_AsUTF8AndSize(args[1], &mode_length);
if (mode == NULL) {
goto exit;
}
+ if (strlen(mode) != (size_t)mode_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
encoding = NULL;
}
else if (PyUnicode_Check(args[3])) {
- encoding = PyUnicode_AsUTF8(args[3]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[3], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("open", "argument 'encoding'", "str or None", args[3]);
errors = NULL;
}
else if (PyUnicode_Check(args[4])) {
- errors = PyUnicode_AsUTF8(args[4]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[4], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("open", "argument 'errors'", "str or None", args[4]);
newline = NULL;
}
else if (PyUnicode_Check(args[5])) {
- newline = PyUnicode_AsUTF8(args[5]);
+ Py_ssize_t newline_length;
+ newline = PyUnicode_AsUTF8AndSize(args[5], &newline_length);
if (newline == NULL) {
goto exit;
}
+ if (strlen(newline) != (size_t)newline_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("open", "argument 'newline'", "str or None", args[5]);
exit:
return return_value;
}
-/*[clinic end generated code: output=feb173d5f2bfb98a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=5d60f4e778a600a4 input=a9049054013a1b77]*/
_PyArg_BadArgument("FileIO", "argument 'mode'", "str", fastargs[1]);
goto exit;
}
- mode = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t mode_length;
+ mode = PyUnicode_AsUTF8AndSize(fastargs[1], &mode_length);
if (mode == NULL) {
goto exit;
}
+ if (strlen(mode) != (size_t)mode_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
#ifndef _IO_FILEIO_TRUNCATE_METHODDEF
#define _IO_FILEIO_TRUNCATE_METHODDEF
#endif /* !defined(_IO_FILEIO_TRUNCATE_METHODDEF) */
-/*[clinic end generated code: output=27cff9d0a618edb6 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=1c0f4a36f76b0c6a input=a9049054013a1b77]*/
_PyArg_BadArgument("write", "argument 1", "str", args[0]);
goto exit;
}
- s = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t s_length;
+ s = PyUnicode_AsUTF8AndSize(args[0], &s_length);
if (s == NULL) {
goto exit;
}
+ if (strlen(s) != (size_t)s_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _io__TextIOBase_write_impl(self, cls, s);
exit:
encoding = NULL;
}
else if (PyUnicode_Check(fastargs[1])) {
- encoding = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("TextIOWrapper", "argument 'encoding'", "str or None", fastargs[1]);
newline = NULL;
}
else if (PyUnicode_Check(fastargs[3])) {
- newline = PyUnicode_AsUTF8(fastargs[3]);
+ Py_ssize_t newline_length;
+ newline = PyUnicode_AsUTF8AndSize(fastargs[3], &newline_length);
if (newline == NULL) {
goto exit;
}
+ if (strlen(newline) != (size_t)newline_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("TextIOWrapper", "argument 'newline'", "str or None", fastargs[3]);
{
return _io_TextIOWrapper_close_impl(self);
}
-/*[clinic end generated code: output=c9ffb48a5278cbd4 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=e58ce89b7354e77a input=a9049054013a1b77]*/
_PyArg_BadArgument("_WindowsConsoleIO", "argument 'mode'", "str", fastargs[1]);
goto exit;
}
- mode = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t mode_length;
+ mode = PyUnicode_AsUTF8AndSize(fastargs[1], &mode_length);
if (mode == NULL) {
goto exit;
}
+ if (strlen(mode) != (size_t)mode_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
#ifndef _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
#define _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
#endif /* !defined(_IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF) */
-/*[clinic end generated code: output=76408dd67894bc9c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=04108fc26b187386 input=a9049054013a1b77]*/
_PyArg_BadArgument("sem_unlink", "argument", "str", arg);
goto exit;
}
- name = PyUnicode_AsUTF8(arg);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(arg, &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _multiprocessing_sem_unlink_impl(module, name);
exit:
#ifndef _MULTIPROCESSING_SEND_METHODDEF
#define _MULTIPROCESSING_SEND_METHODDEF
#endif /* !defined(_MULTIPROCESSING_SEND_METHODDEF) */
-/*[clinic end generated code: output=c6735cbc59b6f324 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=73b4cb8428d816da input=a9049054013a1b77]*/
_PyArg_BadArgument("SemLock", "argument 'name'", "str", fastargs[3]);
goto exit;
}
- name = PyUnicode_AsUTF8(fastargs[3]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(fastargs[3], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
unlink = PyObject_IsTrue(fastargs[4]);
if (unlink < 0) {
goto exit;
#ifndef _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
#define _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
#endif /* !defined(_MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF) */
-/*[clinic end generated code: output=fd94dc907e6ab57f input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d57992037e6770b6 input=a9049054013a1b77]*/
{
int fd;
int async_err = 0;
- const char *name = PyUnicode_AsUTF8(path);
+ const char *name = PyUnicode_AsUTF8AndSize(path, NULL);
if (name == NULL) {
return -1;
}
{
int rv;
int async_err = 0;
- const char *name = PyUnicode_AsUTF8(path);
+ const char *name = PyUnicode_AsUTF8AndSize(path, NULL);
if (name == NULL) {
return NULL;
}
_PyArg_BadArgument("blobopen", "argument 1", "str", args[0]);
goto exit;
}
- table = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t table_length;
+ table = PyUnicode_AsUTF8AndSize(args[0], &table_length);
if (table == NULL) {
goto exit;
}
+ if (strlen(table) != (size_t)table_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!PyUnicode_Check(args[1])) {
_PyArg_BadArgument("blobopen", "argument 2", "str", args[1]);
goto exit;
}
- col = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t col_length;
+ col = PyUnicode_AsUTF8AndSize(args[1], &col_length);
if (col == NULL) {
goto exit;
}
+ if (strlen(col) != (size_t)col_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!sqlite3_int64_converter(args[2], &row)) {
goto exit;
}
_PyArg_BadArgument("blobopen", "argument 'name'", "str", args[4]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[4]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[4], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_kwonly:
return_value = blobopen_impl(self, table, col, row, readonly, name);
_PyArg_BadArgument("create_function", "argument 'name'", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
narg = PyLong_AsInt(args[1]);
if (narg == -1 && PyErr_Occurred()) {
goto exit;
_PyArg_BadArgument("create_window_function", "argument 1", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
num_params = PyLong_AsInt(args[1]);
if (num_params == -1 && PyErr_Occurred()) {
goto exit;
_PyArg_BadArgument("create_aggregate", "argument 'name'", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
n_arg = PyLong_AsInt(args[1]);
if (n_arg == -1 && PyErr_Occurred()) {
goto exit;
_PyArg_BadArgument("load_extension", "argument 1", "str", args[0]);
goto exit;
}
- extension_name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t extension_name_length;
+ extension_name = PyUnicode_AsUTF8AndSize(args[0], &extension_name_length);
if (extension_name == NULL) {
goto exit;
}
+ if (strlen(extension_name) != (size_t)extension_name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!noptargs) {
goto skip_optional_kwonly;
}
entrypoint = NULL;
}
else if (PyUnicode_Check(args[1])) {
- entrypoint = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t entrypoint_length;
+ entrypoint = PyUnicode_AsUTF8AndSize(args[1], &entrypoint_length);
if (entrypoint == NULL) {
goto exit;
}
+ if (strlen(entrypoint) != (size_t)entrypoint_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("load_extension", "argument 'entrypoint'", "str or None", args[1]);
_PyArg_BadArgument("backup", "argument 'name'", "str", args[3]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[3]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[3], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("create_collation", "argument 1", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
callable = args[1];
return_value = pysqlite_connection_create_collation_impl(self, cls, name, callable);
_PyArg_BadArgument("serialize", "argument 'name'", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_kwonly:
return_value = serialize_impl(self, name);
_PyArg_BadArgument("deserialize", "argument 'name'", "str", args[1]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[1], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_kwonly:
return_value = deserialize_impl(self, &data, name);
#ifndef DESERIALIZE_METHODDEF
#define DESERIALIZE_METHODDEF
#endif /* !defined(DESERIALIZE_METHODDEF) */
-/*[clinic end generated code: output=7d2a4d9272f7cb9e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=90b5b9c14261b8d7 input=a9049054013a1b77]*/
_PyArg_BadArgument("executescript", "argument", "str", arg);
goto exit;
}
- sql_script = PyUnicode_AsUTF8(arg);
+ Py_ssize_t sql_script_length;
+ sql_script = PyUnicode_AsUTF8AndSize(arg, &sql_script_length);
if (sql_script == NULL) {
goto exit;
}
+ if (strlen(sql_script) != (size_t)sql_script_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = pysqlite_cursor_executescript_impl(self, sql_script);
exit:
{
return pysqlite_cursor_close_impl(self);
}
-/*[clinic end generated code: output=c772882c7df587ea input=a9049054013a1b77]*/
+/*[clinic end generated code: output=a8ce095c3c80cf65 input=a9049054013a1b77]*/
_PyArg_BadArgument("complete_statement", "argument 'statement'", "str", args[0]);
goto exit;
}
- statement = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t statement_length;
+ statement = PyUnicode_AsUTF8AndSize(args[0], &statement_length);
if (statement == NULL) {
goto exit;
}
+ if (strlen(statement) != (size_t)statement_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = pysqlite_complete_statement_impl(module, statement);
exit:
exit:
return return_value;
}
-/*[clinic end generated code: output=19016e67830c19eb input=a9049054013a1b77]*/
+/*[clinic end generated code: output=457ab0fdbb9e1880 input=a9049054013a1b77]*/
*result = NULL;
}
else if (PyUnicode_Check(str_or_none)) {
- const char *str = PyUnicode_AsUTF8(str_or_none);
+ Py_ssize_t sz;
+ const char *str = PyUnicode_AsUTF8AndSize(str_or_none, &sz);
if (str == NULL) {
return 0;
}
+ if (strlen(str) != (size_t)sz) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ return 0;
+ }
const char *level = get_isolation_level(str);
if (level == NULL) {
_PyArg_BadArgument("make_exception_with_doc", "argument 'name'", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("make_exception_with_doc", "argument 'doc'", "str", args[1]);
goto exit;
}
- doc = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t doc_length;
+ doc = PyUnicode_AsUTF8AndSize(args[1], &doc_length);
if (doc == NULL) {
goto exit;
}
+ if (strlen(doc) != (size_t)doc_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
exit:
return return_value;
}
-/*[clinic end generated code: output=6f2b4f773e0ae755 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=0b11ef105030a48e input=a9049054013a1b77]*/
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("encode", "argument 'errors'", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("decode", "argument 'errors'", "str or None", args[1]);
#define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF \
{"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__},
-/*[clinic end generated code: output=b35a5c3797e0e54a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=219a363662d2fbff input=a9049054013a1b77]*/
_PyArg_BadArgument("lookup", "argument", "str", arg);
goto exit;
}
- encoding = PyUnicode_AsUTF8(arg);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(arg, &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _codecs_lookup_impl(module, encoding);
exit:
_PyArg_BadArgument("encode", "argument 'encoding'", "str", args[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("encode", "argument 'errors'", "str", args[2]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = _codecs_encode_impl(module, obj, encoding, errors);
_PyArg_BadArgument("decode", "argument 'encoding'", "str", args[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("decode", "argument 'errors'", "str", args[2]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = _codecs_decode_impl(module, obj, encoding, errors);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("escape_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("escape_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_7_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_8_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_le_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_be_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_ex_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_le_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_be_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_ex_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("unicode_escape_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("raw_unicode_escape_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("latin_1_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("ascii_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("charmap_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("mbcs_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("oem_decode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[2])) {
- errors = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("code_page_decode", "argument 3", "str or None", args[2]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("readbuffer_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_7_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_8_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_le_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_16_be_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_le_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("utf_32_be_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("unicode_escape_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("raw_unicode_escape_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("latin_1_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("ascii_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("charmap_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("mbcs_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[1])) {
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("oem_encode", "argument 2", "str or None", args[1]);
errors = NULL;
}
else if (PyUnicode_Check(args[2])) {
- errors = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("code_page_encode", "argument 3", "str or None", args[2]);
_PyArg_BadArgument("register_error", "argument 1", "str", args[0]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[0], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
handler = args[1];
return_value = _codecs_register_error_impl(module, errors, handler);
_PyArg_BadArgument("lookup_error", "argument", "str", arg);
goto exit;
}
- name = PyUnicode_AsUTF8(arg);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(arg, &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _codecs_lookup_error_impl(module, name);
exit:
#ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF
#define _CODECS_CODE_PAGE_ENCODE_METHODDEF
#endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */
-/*[clinic end generated code: output=5c95a170d813a46f input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d8d9e372f7ccba35 input=a9049054013a1b77]*/
term = NULL;
}
else if (PyUnicode_Check(args[0])) {
- term = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t term_length;
+ term = PyUnicode_AsUTF8AndSize(args[0], &term_length);
if (term == NULL) {
goto exit;
}
+ if (strlen(term) != (size_t)term_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("setupterm", "argument 'term'", "str or None", args[0]);
_PyArg_BadArgument("tigetflag", "argument", "str", arg);
goto exit;
}
- capname = PyUnicode_AsUTF8(arg);
+ Py_ssize_t capname_length;
+ capname = PyUnicode_AsUTF8AndSize(arg, &capname_length);
if (capname == NULL) {
goto exit;
}
+ if (strlen(capname) != (size_t)capname_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _curses_tigetflag_impl(module, capname);
exit:
_PyArg_BadArgument("tigetnum", "argument", "str", arg);
goto exit;
}
- capname = PyUnicode_AsUTF8(arg);
+ Py_ssize_t capname_length;
+ capname = PyUnicode_AsUTF8AndSize(arg, &capname_length);
if (capname == NULL) {
goto exit;
}
+ if (strlen(capname) != (size_t)capname_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _curses_tigetnum_impl(module, capname);
exit:
_PyArg_BadArgument("tigetstr", "argument", "str", arg);
goto exit;
}
- capname = PyUnicode_AsUTF8(arg);
+ Py_ssize_t capname_length;
+ capname = PyUnicode_AsUTF8AndSize(arg, &capname_length);
if (capname == NULL) {
goto exit;
}
+ if (strlen(capname) != (size_t)capname_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _curses_tigetstr_impl(module, capname);
exit:
#ifndef _CURSES_USE_DEFAULT_COLORS_METHODDEF
#define _CURSES_USE_DEFAULT_COLORS_METHODDEF
#endif /* !defined(_CURSES_USE_DEFAULT_COLORS_METHODDEF) */
-/*[clinic end generated code: output=555e266fc4838612 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=96887782374f070a input=a9049054013a1b77]*/
_PyArg_BadArgument("open", "argument 2", "str", args[1]);
goto exit;
}
- flags = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t flags_length;
+ flags = PyUnicode_AsUTF8AndSize(args[1], &flags_length);
if (flags == NULL) {
goto exit;
}
+ if (strlen(flags) != (size_t)flags_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (nargs < 3) {
goto skip_optional;
}
exit:
return return_value;
}
-/*[clinic end generated code: output=48183905532205c2 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=96fdd4bd7bd256c5 input=a9049054013a1b77]*/
encoding = NULL;
}
else if (PyUnicode_Check(fastargs[1])) {
- encoding = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("XMLParser", "argument 'encoding'", "str or None", fastargs[1]);
exit:
return return_value;
}
-/*[clinic end generated code: output=399d9d5c9435070b input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8fdaa17d3262800a input=a9049054013a1b77]*/
_PyArg_BadArgument("open", "argument 2", "str", args[1]);
goto exit;
}
- flags = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t flags_length;
+ flags = PyUnicode_AsUTF8AndSize(args[1], &flags_length);
if (flags == NULL) {
goto exit;
}
+ if (strlen(flags) != (size_t)flags_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (nargs < 3) {
goto skip_optional;
}
exit:
return return_value;
}
-/*[clinic end generated code: output=725cafd8b2d8cfdb input=a9049054013a1b77]*/
+/*[clinic end generated code: output=c5ee922363d5a81f input=a9049054013a1b77]*/
_PyArg_BadArgument("pbkdf2_hmac", "argument 'hash_name'", "str", args[0]);
goto exit;
}
- hash_name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t hash_name_length;
+ hash_name = PyUnicode_AsUTF8AndSize(args[0], &hash_name_length);
if (hash_name == NULL) {
goto exit;
}
+ if (strlen(hash_name) != (size_t)hash_name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (PyObject_GetBuffer(args[1], &password, PyBUF_SIMPLE) != 0) {
goto exit;
}
#ifndef _HASHLIB_SCRYPT_METHODDEF
#define _HASHLIB_SCRYPT_METHODDEF
#endif /* !defined(_HASHLIB_SCRYPT_METHODDEF) */
-/*[clinic end generated code: output=bc372898eaa3e000 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b7eddeb3d6ccdeec input=a9049054013a1b77]*/
locale = NULL;
}
else if (PyUnicode_Check(args[1])) {
- locale = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t locale_length;
+ locale = PyUnicode_AsUTF8AndSize(args[1], &locale_length);
if (locale == NULL) {
goto exit;
}
+ if (strlen(locale) != (size_t)locale_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("setlocale", "argument 2", "str or None", args[1]);
_PyArg_BadArgument("gettext", "argument", "str", arg);
goto exit;
}
- in = PyUnicode_AsUTF8(arg);
+ Py_ssize_t in_length;
+ in = PyUnicode_AsUTF8AndSize(arg, &in_length);
if (in == NULL) {
goto exit;
}
+ if (strlen(in) != (size_t)in_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _locale_gettext_impl(module, in);
exit:
domain = NULL;
}
else if (PyUnicode_Check(args[0])) {
- domain = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t domain_length;
+ domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
if (domain == NULL) {
goto exit;
}
+ if (strlen(domain) != (size_t)domain_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("dgettext", "argument 1", "str or None", args[0]);
_PyArg_BadArgument("dgettext", "argument 2", "str", args[1]);
goto exit;
}
- in = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t in_length;
+ in = PyUnicode_AsUTF8AndSize(args[1], &in_length);
if (in == NULL) {
goto exit;
}
+ if (strlen(in) != (size_t)in_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _locale_dgettext_impl(module, domain, in);
exit:
domain = NULL;
}
else if (PyUnicode_Check(args[0])) {
- domain = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t domain_length;
+ domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
if (domain == NULL) {
goto exit;
}
+ if (strlen(domain) != (size_t)domain_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("dcgettext", "argument 1", "str or None", args[0]);
_PyArg_BadArgument("dcgettext", "argument 2", "str", args[1]);
goto exit;
}
- msgid = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t msgid_length;
+ msgid = PyUnicode_AsUTF8AndSize(args[1], &msgid_length);
if (msgid == NULL) {
goto exit;
}
+ if (strlen(msgid) != (size_t)msgid_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
category = PyLong_AsInt(args[2]);
if (category == -1 && PyErr_Occurred()) {
goto exit;
domain = NULL;
}
else if (PyUnicode_Check(arg)) {
- domain = PyUnicode_AsUTF8(arg);
+ Py_ssize_t domain_length;
+ domain = PyUnicode_AsUTF8AndSize(arg, &domain_length);
if (domain == NULL) {
goto exit;
}
+ if (strlen(domain) != (size_t)domain_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("textdomain", "argument", "str or None", arg);
_PyArg_BadArgument("bindtextdomain", "argument 1", "str", args[0]);
goto exit;
}
- domain = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t domain_length;
+ domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
if (domain == NULL) {
goto exit;
}
+ if (strlen(domain) != (size_t)domain_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
dirname_obj = args[1];
return_value = _locale_bindtextdomain_impl(module, domain, dirname_obj);
_PyArg_BadArgument("bind_textdomain_codeset", "argument 1", "str", args[0]);
goto exit;
}
- domain = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t domain_length;
+ domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
if (domain == NULL) {
goto exit;
}
+ if (strlen(domain) != (size_t)domain_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (args[1] == Py_None) {
codeset = NULL;
}
else if (PyUnicode_Check(args[1])) {
- codeset = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t codeset_length;
+ codeset = PyUnicode_AsUTF8AndSize(args[1], &codeset_length);
if (codeset == NULL) {
goto exit;
}
+ if (strlen(codeset) != (size_t)codeset_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("bind_textdomain_codeset", "argument 2", "str or None", args[1]);
#ifndef _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
#define _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
#endif /* !defined(_LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF) */
-/*[clinic end generated code: output=14a4bffed066ebb3 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=034a3c219466d207 input=a9049054013a1b77]*/
_PyArg_BadArgument("Unpickler", "argument 'encoding'", "str", fastargs[2]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(fastargs[2]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("Unpickler", "argument 'errors'", "str", fastargs[3]);
goto exit;
}
- errors = PyUnicode_AsUTF8(fastargs[3]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(fastargs[3], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("load", "argument 'encoding'", "str", args[2]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[2], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("load", "argument 'errors'", "str", args[3]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[3]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[3], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("loads", "argument 'encoding'", "str", args[2]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[2], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
_PyArg_BadArgument("loads", "argument 'errors'", "str", args[3]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[3]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[3], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_kwonly;
}
exit:
return return_value;
}
-/*[clinic end generated code: output=1c675a6680a6b90c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7f0564b5fb5410a8 input=a9049054013a1b77]*/
_PyArg_BadArgument("get_channel_binding", "argument 'cb_type'", "str", args[0]);
goto exit;
}
- cb_type = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t cb_type_length;
+ cb_type = PyUnicode_AsUTF8AndSize(args[0], &cb_type_length);
if (cb_type == NULL) {
goto exit;
}
+ if (strlen(cb_type) != (size_t)cb_type_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = _ssl__SSLSocket_get_channel_binding_impl(self, cb_type);
_PyArg_BadArgument("set_ciphers", "argument", "str", arg);
goto exit;
}
- cipherlist = PyUnicode_AsUTF8(arg);
+ Py_ssize_t cipherlist_length;
+ cipherlist = PyUnicode_AsUTF8AndSize(arg, &cipherlist_length);
if (cipherlist == NULL) {
goto exit;
}
+ if (strlen(cipherlist) != (size_t)cipherlist_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _ssl__SSLContext_set_ciphers_impl(self, cipherlist);
exit:
_PyArg_BadArgument("txt2obj", "argument 'txt'", "str", args[0]);
goto exit;
}
- txt = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t txt_length;
+ txt = PyUnicode_AsUTF8AndSize(args[0], &txt_length);
if (txt == NULL) {
goto exit;
}
+ if (strlen(txt) != (size_t)txt_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("enum_certificates", "argument 'store_name'", "str", args[0]);
goto exit;
}
- store_name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t store_name_length;
+ store_name = PyUnicode_AsUTF8AndSize(args[0], &store_name_length);
if (store_name == NULL) {
goto exit;
}
+ if (strlen(store_name) != (size_t)store_name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _ssl_enum_certificates_impl(module, store_name);
exit:
_PyArg_BadArgument("enum_crls", "argument 'store_name'", "str", args[0]);
goto exit;
}
- store_name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t store_name_length;
+ store_name = PyUnicode_AsUTF8AndSize(args[0], &store_name_length);
if (store_name == NULL) {
goto exit;
}
+ if (strlen(store_name) != (size_t)store_name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _ssl_enum_crls_impl(module, store_name);
exit:
#ifndef _SSL_ENUM_CRLS_METHODDEF
#define _SSL_ENUM_CRLS_METHODDEF
#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
-/*[clinic end generated code: output=8350af68e0a56792 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=aa6b0a898b6077fe input=a9049054013a1b77]*/
_PyArg_BadArgument("clone_f1", "argument 'path'", "str", args[0]);
goto exit;
}
- path = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t path_length;
+ path = PyUnicode_AsUTF8AndSize(args[0], &path_length);
if (path == NULL) {
goto exit;
}
+ if (strlen(path) != (size_t)path_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = clone_f1_impl(module, path);
exit:
_PyArg_BadArgument("clone_f2", "argument 'path'", "str", args[0]);
goto exit;
}
- path = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t path_length;
+ path = PyUnicode_AsUTF8AndSize(args[0], &path_length);
if (path == NULL) {
goto exit;
}
+ if (strlen(path) != (size_t)path_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = clone_f2_impl(module, path);
exit:
exit:
return return_value;
}
-/*[clinic end generated code: output=32dc6ac90757da7a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=90743ac900d60f9f input=a9049054013a1b77]*/
_PyArg_BadArgument("eval", "argument", "str", arg);
goto exit;
}
- script = PyUnicode_AsUTF8(arg);
+ Py_ssize_t script_length;
+ script = PyUnicode_AsUTF8AndSize(arg, &script_length);
if (script == NULL) {
goto exit;
}
+ if (strlen(script) != (size_t)script_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_eval_impl(self, script);
exit:
_PyArg_BadArgument("evalfile", "argument", "str", arg);
goto exit;
}
- fileName = PyUnicode_AsUTF8(arg);
+ Py_ssize_t fileName_length;
+ fileName = PyUnicode_AsUTF8AndSize(arg, &fileName_length);
if (fileName == NULL) {
goto exit;
}
+ if (strlen(fileName) != (size_t)fileName_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_evalfile_impl(self, fileName);
exit:
_PyArg_BadArgument("record", "argument", "str", arg);
goto exit;
}
- script = PyUnicode_AsUTF8(arg);
+ Py_ssize_t script_length;
+ script = PyUnicode_AsUTF8AndSize(arg, &script_length);
if (script == NULL) {
goto exit;
}
+ if (strlen(script) != (size_t)script_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_record_impl(self, script);
exit:
_PyArg_BadArgument("adderrorinfo", "argument", "str", arg);
goto exit;
}
- msg = PyUnicode_AsUTF8(arg);
+ Py_ssize_t msg_length;
+ msg = PyUnicode_AsUTF8AndSize(arg, &msg_length);
if (msg == NULL) {
goto exit;
}
+ if (strlen(msg) != (size_t)msg_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_adderrorinfo_impl(self, msg);
exit:
_PyArg_BadArgument("exprstring", "argument", "str", arg);
goto exit;
}
- s = PyUnicode_AsUTF8(arg);
+ Py_ssize_t s_length;
+ s = PyUnicode_AsUTF8AndSize(arg, &s_length);
if (s == NULL) {
goto exit;
}
+ if (strlen(s) != (size_t)s_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_exprstring_impl(self, s);
exit:
_PyArg_BadArgument("exprlong", "argument", "str", arg);
goto exit;
}
- s = PyUnicode_AsUTF8(arg);
+ Py_ssize_t s_length;
+ s = PyUnicode_AsUTF8AndSize(arg, &s_length);
if (s == NULL) {
goto exit;
}
+ if (strlen(s) != (size_t)s_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_exprlong_impl(self, s);
exit:
_PyArg_BadArgument("exprdouble", "argument", "str", arg);
goto exit;
}
- s = PyUnicode_AsUTF8(arg);
+ Py_ssize_t s_length;
+ s = PyUnicode_AsUTF8AndSize(arg, &s_length);
if (s == NULL) {
goto exit;
}
+ if (strlen(s) != (size_t)s_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_exprdouble_impl(self, s);
exit:
_PyArg_BadArgument("exprboolean", "argument", "str", arg);
goto exit;
}
- s = PyUnicode_AsUTF8(arg);
+ Py_ssize_t s_length;
+ s = PyUnicode_AsUTF8AndSize(arg, &s_length);
if (s == NULL) {
goto exit;
}
+ if (strlen(s) != (size_t)s_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_exprboolean_impl(self, s);
exit:
_PyArg_BadArgument("createcommand", "argument 1", "str", args[0]);
goto exit;
}
- name = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
func = args[1];
return_value = _tkinter_tkapp_createcommand_impl(self, name, func);
_PyArg_BadArgument("deletecommand", "argument", "str", arg);
goto exit;
}
- name = PyUnicode_AsUTF8(arg);
+ Py_ssize_t name_length;
+ name = PyUnicode_AsUTF8AndSize(arg, &name_length);
if (name == NULL) {
goto exit;
}
+ if (strlen(name) != (size_t)name_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _tkinter_tkapp_deletecommand_impl(self, name);
exit:
screenName = NULL;
}
else if (PyUnicode_Check(args[0])) {
- screenName = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t screenName_length;
+ screenName = PyUnicode_AsUTF8AndSize(args[0], &screenName_length);
if (screenName == NULL) {
goto exit;
}
+ if (strlen(screenName) != (size_t)screenName_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("create", "argument 1", "str or None", args[0]);
_PyArg_BadArgument("create", "argument 2", "str", args[1]);
goto exit;
}
- baseName = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t baseName_length;
+ baseName = PyUnicode_AsUTF8AndSize(args[1], &baseName_length);
if (baseName == NULL) {
goto exit;
}
+ if (strlen(baseName) != (size_t)baseName_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (nargs < 3) {
goto skip_optional;
}
_PyArg_BadArgument("create", "argument 3", "str", args[2]);
goto exit;
}
- className = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t className_length;
+ className = PyUnicode_AsUTF8AndSize(args[2], &className_length);
if (className == NULL) {
goto exit;
}
+ if (strlen(className) != (size_t)className_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (nargs < 4) {
goto skip_optional;
}
use = NULL;
}
else if (PyUnicode_Check(args[7])) {
- use = PyUnicode_AsUTF8(args[7]);
+ Py_ssize_t use_length;
+ use = PyUnicode_AsUTF8AndSize(args[7], &use_length);
if (use == NULL) {
goto exit;
}
+ if (strlen(use) != (size_t)use_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("create", "argument 8", "str or None", args[7]);
#ifndef _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF
#define _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF
#endif /* !defined(_TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF) */
-/*[clinic end generated code: output=0c8b5f960d7738fd input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d447501ec5aa9447 input=a9049054013a1b77]*/
_PyArg_BadArgument("getgrouplist", "argument 1", "str", args[0]);
goto exit;
}
- user = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t user_length;
+ user = PyUnicode_AsUTF8AndSize(args[0], &user_length);
if (user == NULL) {
goto exit;
}
+ if (strlen(user) != (size_t)user_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
basegid = PyLong_AsInt(args[1]);
if (basegid == -1 && PyErr_Occurred()) {
goto exit;
_PyArg_BadArgument("getgrouplist", "argument 1", "str", args[0]);
goto exit;
}
- user = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t user_length;
+ user = PyUnicode_AsUTF8AndSize(args[0], &user_length);
if (user == NULL) {
goto exit;
}
+ if (strlen(user) != (size_t)user_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!_Py_Gid_Converter(args[1], &basegid)) {
goto exit;
}
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
-/*[clinic end generated code: output=a377982a6d1e77b9 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=a05abdc48e3def44 input=a9049054013a1b77]*/
_PyArg_BadArgument("SetBase", "argument", "str", arg);
goto exit;
}
- base = PyUnicode_AsUTF8(arg);
+ Py_ssize_t base_length;
+ base = PyUnicode_AsUTF8AndSize(arg, &base_length);
if (base == NULL) {
goto exit;
}
+ if (strlen(base) != (size_t)base_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = pyexpat_xmlparser_SetBase_impl(self, base);
exit:
context = NULL;
}
else if (PyUnicode_Check(args[0])) {
- context = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t context_length;
+ context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
if (context == NULL) {
goto exit;
}
+ if (strlen(context) != (size_t)context_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_posonly:
return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
encoding = NULL;
}
else if (PyUnicode_Check(args[0])) {
- encoding = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("ParserCreate", "argument 'encoding'", "str or None", args[0]);
namespace_separator = NULL;
}
else if (PyUnicode_Check(args[1])) {
- namespace_separator = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t namespace_separator_length;
+ namespace_separator = PyUnicode_AsUTF8AndSize(args[1], &namespace_separator_length);
if (namespace_separator == NULL) {
goto exit;
}
+ if (strlen(namespace_separator) != (size_t)namespace_separator_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("ParserCreate", "argument 'namespace_separator'", "str or None", args[1]);
#ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
-/*[clinic end generated code: output=bfc1f3d3e2cbc8dc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=48c4296e43777df4 input=a9049054013a1b77]*/
_PyArg_BadArgument("symtable", "argument 3", "str", args[2]);
goto exit;
}
- startstr = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t startstr_length;
+ startstr = PyUnicode_AsUTF8AndSize(args[2], &startstr_length);
if (startstr == NULL) {
goto exit;
}
+ if (strlen(startstr) != (size_t)startstr_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = _symtable_symtable_impl(module, source, filename, startstr);
exit:
return return_value;
}
-/*[clinic end generated code: output=9af1ab5a114a1ec7 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=931964a76a72f850 input=a9049054013a1b77]*/
_PyArg_BadArgument("bytearray", "argument 'encoding'", "str", fastargs[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("bytearray", "argument 'errors'", "str", fastargs[2]);
goto exit;
}
- errors = PyUnicode_AsUTF8(fastargs[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = bytearray___init___impl((PyByteArrayObject *)self, arg, encoding, errors);
_PyArg_BadArgument("decode", "argument 'encoding'", "str", args[0]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("decode", "argument 'errors'", "str", args[1]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = bytearray_decode_impl(self, encoding, errors);
{
return bytearray_sizeof_impl(self);
}
-/*[clinic end generated code: output=5a7de6295a7ce6cc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=0797a5e03cda2a16 input=a9049054013a1b77]*/
_PyArg_BadArgument("decode", "argument 'encoding'", "str", args[0]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("decode", "argument 'errors'", "str", args[1]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = bytes_decode_impl(self, encoding, errors);
_PyArg_BadArgument("bytes", "argument 'encoding'", "str", fastargs[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("bytes", "argument 'errors'", "str", fastargs[2]);
goto exit;
}
- errors = PyUnicode_AsUTF8(fastargs[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = bytes_new_impl(type, x, encoding, errors);
exit:
return return_value;
}
-/*[clinic end generated code: output=97aab3f6ae398664 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8a49dbbd78914a6f input=a9049054013a1b77]*/
_PyArg_BadArgument("__getformat__", "argument", "str", arg);
goto exit;
}
- typestr = PyUnicode_AsUTF8(arg);
+ Py_ssize_t typestr_length;
+ typestr = PyUnicode_AsUTF8AndSize(arg, &typestr_length);
if (typestr == NULL) {
goto exit;
}
+ if (strlen(typestr) != (size_t)typestr_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = float___getformat___impl(type, typestr);
exit:
exit:
return return_value;
}
-/*[clinic end generated code: output=01f6fbd082eefead input=a9049054013a1b77]*/
+/*[clinic end generated code: output=c79743c8551c30d9 input=a9049054013a1b77]*/
order = NULL;
}
else if (PyUnicode_Check(args[0])) {
- order = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t order_length;
+ order = PyUnicode_AsUTF8AndSize(args[0], &order_length);
if (order == NULL) {
goto exit;
}
+ if (strlen(order) != (size_t)order_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
}
else {
_PyArg_BadArgument("tobytes", "argument 'order'", "str or None", args[0]);
exit:
return return_value;
}
-/*[clinic end generated code: output=abd8c0ce804d8992 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7e76a09106921ba2 input=a9049054013a1b77]*/
_PyArg_BadArgument("encode", "argument 'encoding'", "str", args[0]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(args[0]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("encode", "argument 'errors'", "str", args[1]);
goto exit;
}
- errors = PyUnicode_AsUTF8(args[1]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = unicode_encode_impl(self, encoding, errors);
_PyArg_BadArgument("str", "argument 'encoding'", "str", fastargs[1]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(fastargs[1]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!--noptargs) {
goto skip_optional_pos;
}
_PyArg_BadArgument("str", "argument 'errors'", "str", fastargs[2]);
goto exit;
}
- errors = PyUnicode_AsUTF8(fastargs[2]);
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length);
if (errors == NULL) {
goto exit;
}
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_pos:
return_value = unicode_new_impl(type, x, encoding, errors);
exit:
return return_value;
}
-/*[clinic end generated code: output=20313d6339272ddc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=873d8b3d09af3095 input=a9049054013a1b77]*/
return 0;
}
- Py_ssize_t doc_size;
- const char *doc_str = PyUnicode_AsUTF8AndSize(doc, &doc_size);
+ const char *doc_str = PyUnicode_AsUTF8(doc);
if (doc_str == NULL) {
return -1;
}
// Silently truncate the docstring if it contains a null byte
- Py_ssize_t size = doc_size + 1;
+ Py_ssize_t size = strlen(doc_str) + 1;
char *tp_doc = (char *)PyObject_Malloc(size);
if (tp_doc == NULL) {
PyErr_NoMemory();
const char *
PyUnicode_AsUTF8(PyObject *unicode)
{
- Py_ssize_t size;
- const char *utf8 = PyUnicode_AsUTF8AndSize(unicode, &size);
- if (utf8 != NULL && strlen(utf8) != (size_t)size) {
- PyErr_SetString(PyExc_ValueError, "embedded null character");
- return NULL;
- }
- return utf8;
+ return PyUnicode_AsUTF8AndSize(unicode, NULL);
}
/*
EXPORT_FUNC(PyUnicode_AsUnicodeEscapeString)
EXPORT_FUNC(PyUnicode_AsUTF16String)
EXPORT_FUNC(PyUnicode_AsUTF32String)
-EXPORT_FUNC(PyUnicode_AsUTF8)
EXPORT_FUNC(PyUnicode_AsUTF8AndSize)
EXPORT_FUNC(PyUnicode_AsUTF8String)
EXPORT_FUNC(PyUnicode_AsWideChar)
_PyArg_BadArgument("tokenizeriter", "argument 'encoding'", "str", fastargs[2]);
goto exit;
}
- encoding = PyUnicode_AsUTF8(fastargs[2]);
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length);
if (encoding == NULL) {
goto exit;
}
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
skip_optional_kwonly:
return_value = tokenizeriter_new_impl(type, readline, extra_tokens, encoding);
exit:
return return_value;
}
-/*[clinic end generated code: output=92cb8176149f0924 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=dcd6ec48f06a092e input=a9049054013a1b77]*/
_PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]);
goto exit;
}
- mode = PyUnicode_AsUTF8(args[2]);
+ Py_ssize_t mode_length;
+ mode = PyUnicode_AsUTF8AndSize(args[2], &mode_length);
if (mode == NULL) {
goto exit;
}
+ if (strlen(mode) != (size_t)mode_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
if (!noptargs) {
goto skip_optional_pos;
}
exit:
return return_value;
}
-/*[clinic end generated code: output=95d3813b1798f018 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=31bded5d08647a57 input=a9049054013a1b77]*/
_PyArg_BadArgument("activate_stack_trampoline", "argument", "str", arg);
goto exit;
}
- backend = PyUnicode_AsUTF8(arg);
+ Py_ssize_t backend_length;
+ backend = PyUnicode_AsUTF8AndSize(arg, &backend_length);
if (backend == NULL) {
goto exit;
}
+ if (strlen(backend) != (size_t)backend_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
return_value = sys_activate_stack_trampoline_impl(module, backend);
exit:
#ifndef SYS_GETANDROIDAPILEVEL_METHODDEF
#define SYS_GETANDROIDAPILEVEL_METHODDEF
#endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */
-/*[clinic end generated code: output=cdfb714878deeaf1 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=f36d45c829250775 input=a9049054013a1b77]*/
} else {
/* "s" or "z" */
const char **p = va_arg(*p_va, const char **);
+ Py_ssize_t len;
sarg = NULL;
if (c == 'z' && arg == Py_None)
*p = NULL;
else if (PyUnicode_Check(arg)) {
- sarg = PyUnicode_AsUTF8(arg);
- if (sarg == NULL) {
+ sarg = PyUnicode_AsUTF8AndSize(arg, &len);
+ if (sarg == NULL)
return converterr(CONV_UNICODE,
arg, msgbuf, bufsize);
+ if (strlen(sarg) != (size_t)len) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ RETURN_ERR_OCCURRED;
}
*p = sarg;
}
{bad_argument}
goto exit;
}}}}
- {paramname} = PyUnicode_AsUTF8({argname});
+ Py_ssize_t {length_name};
+ {paramname} = PyUnicode_AsUTF8AndSize({argname}, &{length_name});
if ({paramname} == NULL) {{{{
goto exit;
}}}}
+ if (strlen({paramname}) != (size_t){length_name}) {{{{
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }}}}
""",
argname=argname,
- bad_argument=self.bad_argument(displayname, 'str', limited_capi=limited_capi))
+ bad_argument=self.bad_argument(displayname, 'str', limited_capi=limited_capi),
+ length_name=self.length_name)
if self.format_unit == 'z':
return self.format_code("""
if ({argname} == Py_None) {{{{
{paramname} = NULL;
}}}}
else if (PyUnicode_Check({argname})) {{{{
- {paramname} = PyUnicode_AsUTF8({argname});
+ Py_ssize_t {length_name};
+ {paramname} = PyUnicode_AsUTF8AndSize({argname}, &{length_name});
if ({paramname} == NULL) {{{{
goto exit;
}}}}
+ if (strlen({paramname}) != (size_t){length_name}) {{{{
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }}}}
}}}}
else {{{{
{bad_argument}
}}}}
""",
argname=argname,
- bad_argument=self.bad_argument(displayname, 'str or None', limited_capi=limited_capi))
+ bad_argument=self.bad_argument(displayname, 'str or None', limited_capi=limited_capi),
+ length_name=self.length_name)
return super().parse_arg(argname, displayname, limited_capi=limited_capi)
#