summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-03-19 00:46:25 (GMT)
committerGitHub <noreply@github.com>2019-03-19 00:46:25 (GMT)
commit5f9cf23502febe0eb3bc02e45c7d2bfc79424757 (patch)
tree66e3e75c52201876c33fb90c9036420687f60dfb /Objects
parent7b14f0c02ce9d919c503119db190dbca0e703393 (diff)
downloadcpython-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.c13
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;