From: Brett Cannon Date: Thu, 25 Jul 2013 21:34:00 +0000 (-0400) Subject: Issue #18556: Check the return value for PyUnicode_AsWideChar() in X-Git-Tag: v3.4.0a1~81^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=845f7845aa6493b59a3b3c427ae85fcd42f58d16;p=thirdparty%2FPython%2Fcpython.git Issue #18556: Check the return value for PyUnicode_AsWideChar() in U_set() from ctypes. CID #486657 --- diff --git a/Misc/NEWS b/Misc/NEWS index 7880adb2b702..8c23a9e56bb2 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -52,6 +52,9 @@ Core and Builtins Library ------- +- Issue #18556: Check the return value of a PyUnicode_AsWideChar() call in + ctypes' U_set(). + - Issue #18549: Eliminate dead code in socket_ntohl() - Issue #18514: Fix unreachable Py_DECREF() call in PyCData_FromBaseObj() diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index f6f8e4236b12..65772cfa45a4 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; }