mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
Issue #18408: handle PySys_GetObject() failure, raise a RuntimeError
This commit is contained in:
parent
1b63493ed1
commit
1e53bbaced
4 changed files with 22 additions and 9 deletions
|
@ -1361,8 +1361,10 @@ whichmodule(PyObject *global, PyObject *global_name)
|
||||||
|
|
||||||
search:
|
search:
|
||||||
modules_dict = PySys_GetObject("modules");
|
modules_dict = PySys_GetObject("modules");
|
||||||
if (modules_dict == NULL)
|
if (modules_dict == NULL) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "unable to get sys.modules");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
module_name = NULL;
|
module_name = NULL;
|
||||||
|
@ -5542,8 +5544,10 @@ Unpickler_find_class(UnpicklerObject *self, PyObject *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
modules_dict = PySys_GetObject("modules");
|
modules_dict = PySys_GetObject("modules");
|
||||||
if (modules_dict == NULL)
|
if (modules_dict == NULL) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "unable to get sys.modules");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
module = PyDict_GetItemWithError(modules_dict, module_name);
|
module = PyDict_GetItemWithError(modules_dict, module_name);
|
||||||
if (module == NULL) {
|
if (module == NULL) {
|
||||||
|
|
|
@ -260,8 +260,10 @@ RunMainFromImporter(wchar_t *filename)
|
||||||
/* argv0 is usable as an import source, so put it in sys.path[0]
|
/* argv0 is usable as an import source, so put it in sys.path[0]
|
||||||
and import __main__ */
|
and import __main__ */
|
||||||
sys_path = PySys_GetObject("path");
|
sys_path = PySys_GetObject("path");
|
||||||
if (sys_path == NULL)
|
if (sys_path == NULL) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "unable to get sys.path");
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
if (PyList_SetItem(sys_path, 0, argv0)) {
|
if (PyList_SetItem(sys_path, 0, argv0)) {
|
||||||
argv0 = NULL;
|
argv0 = NULL;
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -1550,6 +1550,11 @@ builtin_print(PyObject *self, PyObject *args, PyObject *kwds)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (file == NULL || file == Py_None) {
|
if (file == NULL || file == Py_None) {
|
||||||
file = PySys_GetObject("stdout");
|
file = PySys_GetObject("stdout");
|
||||||
|
if (file == NULL) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* sys.stdout may be None when FILE* stdout isn't connected */
|
/* sys.stdout may be None when FILE* stdout isn't connected */
|
||||||
if (file == Py_None)
|
if (file == Py_None)
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
|
|
@ -85,8 +85,10 @@ _PyImportZip_Init(void)
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
path_hooks = PySys_GetObject("path_hooks");
|
path_hooks = PySys_GetObject("path_hooks");
|
||||||
if (path_hooks == NULL)
|
if (path_hooks == NULL) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "unable to get sys.path_hooks");
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
if (Py_VerboseFlag)
|
if (Py_VerboseFlag)
|
||||||
PySys_WriteStderr("# installing zipimport hook\n");
|
PySys_WriteStderr("# installing zipimport hook\n");
|
||||||
|
@ -944,11 +946,11 @@ PyAPI_FUNC(PyObject *)
|
||||||
PyImport_GetImporter(PyObject *path) {
|
PyImport_GetImporter(PyObject *path) {
|
||||||
PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL;
|
PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL;
|
||||||
|
|
||||||
if ((path_importer_cache = PySys_GetObject("path_importer_cache"))) {
|
path_importer_cache = PySys_GetObject("path_importer_cache");
|
||||||
if ((path_hooks = PySys_GetObject("path_hooks"))) {
|
path_hooks = PySys_GetObject("path_hooks");
|
||||||
importer = get_path_importer(path_importer_cache,
|
if (path_importer_cache != NULL && path_hooks != NULL) {
|
||||||
path_hooks, path);
|
importer = get_path_importer(path_importer_cache,
|
||||||
}
|
path_hooks, path);
|
||||||
}
|
}
|
||||||
Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */
|
Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */
|
||||||
return importer;
|
return importer;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue