diff --git a/Misc/NEWS b/Misc/NEWS index 744d7e194d2..1dff486842a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -166,6 +166,9 @@ Core and Builtins Library ------- +- Issue #18556: Check the return type of PyUnicode_AsWideChar() in ctype's + U_set(). + - Issue #17818: aifc.getparams now returns a namedtuple. - Issue #18549: Eliminate dead code in socket_ntohl() diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index f6f8e4236b1..65772cfa45a 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -1260,7 +1260,11 @@ U_set(void *ptr, PyObject *value, Py_ssize_t length) } else if (size < length-1) /* copy terminating NUL character if there is space */ size += 1; - PyUnicode_AsWideChar(value, (wchar_t *)ptr, size); + + if (PyUnicode_AsWideChar(value, (wchar_t *)ptr, size) == -1) { + return NULL; + } + return value; }