diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-03-19 00:46:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-19 00:46:25 (GMT) |
commit | 5f9cf23502febe0eb3bc02e45c7d2bfc79424757 (patch) | |
tree | 66e3e75c52201876c33fb90c9036420687f60dfb /Objects | |
parent | 7b14f0c02ce9d919c503119db190dbca0e703393 (diff) | |
download | cpython-5f9cf23502febe0eb3bc02e45c7d2bfc79424757.zip cpython-5f9cf23502febe0eb3bc02e45c7d2bfc79424757.tar.gz cpython-5f9cf23502febe0eb3bc02e45c7d2bfc79424757.tar.bz2 |
bpo-36301: Error if decoding pybuilddir.txt fails (GH-12422)
Python initialization now fails if decoding pybuilddir.txt
configuration file fails at startup.
_PyPathConfig_Calculate() now reports memory allocation failure and
decoding error on decoding pybuilddir.txt content from
UTF-8/surrogateescape.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/unicodeobject.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index b3a851a..9d3ed0d 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -5064,12 +5064,21 @@ _Py_DecodeUTF8Ex(const char *s, Py_ssize_t size, wchar_t **wstr, size_t *wlen, return 0; } + wchar_t* -_Py_DecodeUTF8_surrogateescape(const char *arg, Py_ssize_t arglen) +_Py_DecodeUTF8_surrogateescape(const char *arg, Py_ssize_t arglen, + size_t *wlen) { wchar_t *wstr; - int res = _Py_DecodeUTF8Ex(arg, arglen, &wstr, NULL, NULL, 1); + int res = _Py_DecodeUTF8Ex(arg, arglen, + &wstr, wlen, + NULL, _Py_ERROR_SURROGATEESCAPE); if (res != 0) { + /* _Py_DecodeUTF8Ex() must support _Py_ERROR_SURROGATEESCAPE */ + assert(res != -3); + if (wlen) { + *wlen = (size_t)res; + } return NULL; } return wstr; |