diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-06-27 13:03:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-27 13:03:14 (GMT) |
commit | e613e6add5f07ff6aad5802924596b631b707d2a (patch) | |
tree | 8e3a53cf8a0851c17a2dc9bcbd975c2bec5ff846 /Doc | |
parent | 65474b9d7a230943d4d3f1d7d51f77bb141240f0 (diff) | |
download | cpython-e613e6add5f07ff6aad5802924596b631b707d2a.zip cpython-e613e6add5f07ff6aad5802924596b631b707d2a.tar.gz cpython-e613e6add5f07ff6aad5802924596b631b707d2a.tar.bz2 |
bpo-30708: Check for null characters in PyUnicode_AsWideCharString(). (#2285)
Raise a ValueError if the second argument is NULL and the wchar_t\*
string contains null characters.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/c-api/unicode.rst | 16 | ||||
-rw-r--r-- | Doc/whatsnew/3.7.rst | 4 |
2 files changed, 15 insertions, 5 deletions
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst index 84059e4..45aff1b 100644 --- a/Doc/c-api/unicode.rst +++ b/Doc/c-api/unicode.rst @@ -934,16 +934,22 @@ wchar_t Support Convert the Unicode object to a wide character string. The output string always ends with a null character. If *size* is not *NULL*, write the number of wide characters (excluding the trailing null termination character) into - *\*size*. + *\*size*. Note that the resulting :c:type:`wchar_t` string might contain + null characters, which would cause the string to be truncated when used with + most C functions. If *size* is *NULL* and the :c:type:`wchar_t*` string + contains null characters a :exc:`ValueError` is raised. Returns a buffer allocated by :c:func:`PyMem_Alloc` (use - :c:func:`PyMem_Free` to free it) on success. On error, returns *NULL*, - *\*size* is undefined and raises a :exc:`MemoryError`. Note that the - resulting :c:type:`wchar_t` string might contain null characters, which - would cause the string to be truncated when used with most C functions. + :c:func:`PyMem_Free` to free it) on success. On error, returns *NULL* + and *\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation + is failed. .. versionadded:: 3.2 + .. versionchanged:: 3.7 + Raises a :exc:`ValueError` if *size* is *NULL* and the :c:type:`wchar_t*` + string contains null characters. + .. _builtincodecs: diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index 927ae5b..e34268e 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -360,6 +360,10 @@ Changes in the C API :c:type:`unsigned long`. (Contributed by Serhiy Storchaka in :issue:`6532`.) +- :c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the + second argument is *NULL* and the :c:type:`wchar_t*` string contains null + characters. (Contributed by Serhiy Storchaka in :issue:`30708`.) + Removed ======= |