diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-09-18 18:24:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 18:24:41 (GMT) |
commit | 17a335dd0291d09e1510157a4ebe02932ec632dd (patch) | |
tree | 90cb5510b371fa920994ed165aa6b9214b3b9389 /Python/sysmodule.c | |
parent | 2184b76496f8bb39b1b499c821bd6d9dbc81548e (diff) | |
download | cpython-17a335dd0291d09e1510157a4ebe02932ec632dd.zip cpython-17a335dd0291d09e1510157a4ebe02932ec632dd.tar.gz cpython-17a335dd0291d09e1510157a4ebe02932ec632dd.tar.bz2 |
[3.11] Fix error handling in _PySys_UpdateConfig() (GH-109524) (GH-109551)
(cherry picked from commit c829975428253568d47ebfc3104fa7386b5e0b58)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r-- | Python/sysmodule.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 6e9ec90..d0941e8 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -3113,7 +3113,9 @@ _PySys_UpdateConfig(PyThreadState *tstate) if (config->pycache_prefix != NULL) { SET_SYS_FROM_WSTR("pycache_prefix", config->pycache_prefix); } else { - PyDict_SetItemString(sysdict, "pycache_prefix", Py_None); + if (PyDict_SetItemString(sysdict, "pycache_prefix", Py_None) < 0) { + return -1; + } } COPY_LIST("argv", config->argv); @@ -3127,7 +3129,9 @@ _PySys_UpdateConfig(PyThreadState *tstate) SET_SYS_FROM_WSTR("_stdlib_dir", stdlibdir); } else { - PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None); + if (PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None) < 0) { + return -1; + } } #undef SET_SYS_FROM_WSTR @@ -3137,6 +3141,9 @@ _PySys_UpdateConfig(PyThreadState *tstate) // sys.flags PyObject *flags = _PySys_GetObject(interp, "flags"); // borrowed ref if (flags == NULL) { + if (!_PyErr_Occurred(tstate)) { + _PyErr_SetString(tstate, PyExc_RuntimeError, "lost sys.flags"); + } return -1; } if (set_flags_from_config(interp, flags) < 0) { |