From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:58:58 +0000 (-0700) Subject: [3.12] Fix error handling in _PySys_UpdateConfig() (GH-109524) (#109550) X-Git-Tag: v3.12.1~456 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=df2cdcf22f63ca8b958e99406aff41e7c98f16ad;p=thirdparty%2FPython%2Fcpython.git [3.12] Fix error handling in _PySys_UpdateConfig() (GH-109524) (#109550) Fix error handling in _PySys_UpdateConfig() (GH-109524) (cherry picked from commit c829975428253568d47ebfc3104fa7386b5e0b58) Co-authored-by: Serhiy Storchaka --- diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 4bd38b4b2678..14f4447425d0 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -3466,7 +3466,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); @@ -3480,7 +3482,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 @@ -3490,6 +3494,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) {