]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] Fix error handling in _PySys_UpdateConfig() (GH-109524) (#109550)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 2 Oct 2023 14:58:58 +0000 (07:58 -0700)
committerGitHub <noreply@github.com>
Mon, 2 Oct 2023 14:58:58 +0000 (16:58 +0200)
Fix error handling in _PySys_UpdateConfig() (GH-109524)
(cherry picked from commit c829975428253568d47ebfc3104fa7386b5e0b58)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Python/sysmodule.c

index 4bd38b4b267873fa4f86725342d413acf2260fec..14f4447425d025f17ba1ebf466e100cf8add1867 100644 (file)
@@ -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) {