cpython/Python
Kevin Adler 2d2af320d9
bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466)
When running in a non-UTF-8 locale, if an error occurs while importing a
native Python module (say because a dependent share library is missing),
the error message string returned may contain non-ASCII code points
causing a UnicodeDecodeError.

PyUnicode_DecodeFSDefault is used for buffers which may contain
filesystem  paths. For consistency with os.strerror(),
PyUnicode_DecodeLocale is used for buffers which contain system error
messages. While the shortname parameter is always encoded in ASCII
according to PEP 489, it is left decoded using PyUnicode_FromString to
minimize the changes and since it should not affect the decoding (albeit
_potentially_ slower).

In dynload_hpux, since the error buffer contains a message generated
from a static ASCII string and the module filesystem path,
PyUnicode_DecodeFSDefault is used instead of PyUnicode_DecodeLocale as
is used elsewhere.

* bpo-41894: Fix bugs in dynload error msg handling

For both dynload_aix and dynload_hpux, properly handle the possibility
that decoding strings may return NULL and when such an error happens,
properly decrement any previously decoded strings and return early.

In addition, in dynload_aix, ensure that we pass the decoded string
*object* pathname_ob to PyErr_SetImportError instead of the original
pathname buffer.

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2020-10-15 10:53:27 +09:00
..
clinic bpo-40471: Fix grammar typo in 'issubclass' docstring (GH-19847) 2020-06-03 06:19:45 -07:00
_warnings.c bpo-39465: Use _PyInterpreterState_GET() (GH-20788) 2020-06-10 20:08:26 +02:00
asdl.c bpo-41746: Add type information to asdl_seq objects (GH-22223) 2020-09-16 19:42:00 +01:00
ast.c bpo-42000: Cleanup the AST related C-code (GH-22641) 2020-10-10 10:14:59 -07:00
ast_opt.c bpo-38605: Make 'from __future__ import annotations' the default (GH-20434) 2020-10-06 13:03:02 -07:00
ast_unparse.c bpo-41746: Add type information to asdl_seq objects (GH-22223) 2020-09-16 19:42:00 +01:00
bltinmodule.c bpo-41078: Fix bltinmodule.c with Py_TRACE_REFS (GH-21058) 2020-06-22 18:02:49 +02:00
bootstrap_hash.c bpo-40910: Export Py_GetArgcArgv() function (GH-20721) 2020-06-08 18:12:59 +02:00
ceval.c bpo-41756: Add PyIter_Send function (#22443) 2020-10-09 17:15:15 -07:00
ceval_gil.h bpo-40513: Per-interpreter GIL (GH-19943) 2020-05-05 20:27:47 +02:00
codecs.c bpo-41842: Add codecs.unregister() function (GH-22360) 2020-09-28 23:41:11 +02:00
compile.c bpo-38605: Make 'from __future__ import annotations' the default (GH-20434) 2020-10-06 13:03:02 -07:00
condvar.h
context.c bpo-40521: Fix _PyContext_Fini() (GH-21103) 2020-06-24 03:21:15 +02:00
dtoa.c bpo-40780: Fix failure of _Py_dg_dtoa to remove trailing zeros (GH-20435) 2020-05-29 14:23:57 +01:00
dup2.c
dynamic_annotations.c
dynload_aix.c bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466) 2020-10-15 10:53:27 +09:00
dynload_hpux.c bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466) 2020-10-15 10:53:27 +09:00
dynload_shlib.c bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466) 2020-10-15 10:53:27 +09:00
dynload_stub.c
dynload_win.c bpo-36346: Make using the legacy Unicode C API optional (GH-21437) 2020-07-10 23:26:06 +03:00
errors.c bpo-41991: Remove _PyObject_HasAttrId (GH-22629) 2020-10-10 22:23:42 +03:00
fileutils.c bpo-40422: Move _Py_closerange to fileutils.c (GH-22680) 2020-10-13 22:04:44 +02:00
formatter_unicode.c bpo-41681: Fix for f-string/str.format error description when using 2 , in format specifier (GH-22036) 2020-09-01 10:34:29 -04:00
frozen.c
frozenmain.c
future.c bpo-38605: Make 'from __future__ import annotations' the default (GH-20434) 2020-10-06 13:03:02 -07:00
getargs.c bpo-41078: Rename pycore_tupleobject.h to pycore_tuple.h (GH-21056) 2020-06-22 17:27:35 +02:00
getcompiler.c
getcopyright.c
getopt.c bpo-40527: Fix command line argument parsing (GH-19955) 2020-05-06 22:22:17 +09:00
getplatform.c
getversion.c
hamt.c bpo-29882: Add _Py_popcount32() function (GH-20518) 2020-06-08 16:30:33 +02:00
hashtable.c bpo-41061: Fix incorrect expressions in hashtable (GH-21028) 2020-06-22 00:41:48 -07:00
import.c bpo-41993: Fix possible issues in remove_module() (GH-22631) 2020-10-11 16:51:07 +03:00
importdl.c
importdl.h
importlib.h bpo-41323: Perform 'peephole' optimizations directly on the CFG. (GH-21517) 2020-07-30 10:03:00 +01:00
importlib_external.h bpo-38605: bump the magic number for 'annotations' future (#22630) 2020-10-10 15:19:46 -07:00
importlib_zipimport.h bpo-41323: Perform 'peephole' optimizations directly on the CFG. (GH-21517) 2020-07-30 10:03:00 +01:00
initconfig.c bpo-41819: Fix compiler warning in init_dump_ascii_wstr() (GH-22332) 2020-09-21 10:35:17 +02:00
makeopcodetargets.py
marshal.c bpo-1635741: Port mashal module to multi-phase init (#22149) 2020-09-08 15:33:52 +02:00
modsupport.c closes bpo-41533: Fix a potential memory leak when allocating a stack (GH-21847) 2020-08-29 23:53:08 -05:00
mysnprintf.c bpo-36020: Require vsnprintf() to build Python (GH-20899) 2020-06-16 00:54:44 +02:00
mystrtoul.c
opcode_targets.h
pathconfig.c bpo-29778: test_embed tests the path configuration (GH-21306) 2020-07-08 00:20:37 +02:00
preconfig.c _PyPreConfig_Read() decodes argv at each iteration (GH-20786) 2020-06-10 19:33:11 +02:00
pyarena.c
pyctype.c
pyfpe.c
pyhash.c bpo-40943: Replace PY_FORMAT_SIZE_T with "z" (GH-20781) 2020-06-10 18:38:05 +02:00
pylifecycle.c bpo-41631: _ast module uses again a global state (#21961) 2020-09-15 18:03:34 +02:00
pymath.c bpo-29782: Consolidate _Py_Bit_Length() (GH-20739) 2020-06-15 14:33:48 +02:00
pystate.c bpo-41936. Remove macros Py_ALLOW_RECURSION/Py_END_ALLOW_RECURSION (GH-22552) 2020-10-05 12:32:00 +03:00
pystrcmp.c bpo-41524: fix pointer bug in PyOS_mystr{n}icmp (GH-21845) 2020-08-27 14:45:25 +09:00
pystrhex.c
pystrtod.c
Python-ast.c bpo-41746: Add type information to asdl_seq objects (GH-22223) 2020-09-16 19:42:00 +01:00
pythonrun.c bpo-41991: Remove _PyObject_HasAttrId (GH-22629) 2020-10-10 22:23:42 +03:00
pytime.c bpo-40650: Include winsock2.h in pytime.c, instead of a full windows.h (GH-20137) 2020-05-18 17:22:53 +01:00
README
structmember.c
symtable.c bpo-41746: Add type information to asdl_seq objects (GH-22223) 2020-09-16 19:42:00 +01:00
sysmodule.c bpo-42002: Clean up initialization of the sys module. (GH-22642) 2020-10-11 15:30:43 +03:00
thread.c
thread_nt.h
thread_pthread.h Fix -Wstrict-prototypes warning in thread_pthread.h. (GH-21477) 2020-07-15 08:12:05 -05:00
traceback.c bpo-40421: Add PyFrame_GetBack() function (GH-19765) 2020-04-29 03:28:46 +02:00
wordcode_helpers.h

Miscellaneous source files for the main Python shared library