diff options
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_ctypes/callproc.c | 5 |
3 files changed, 8 insertions, 1 deletions
@@ -771,3 +771,4 @@ Uwe Zessin Amaury Forgeot d'Arc Peter Åstrand Tarek Ziad +Victor Stinner @@ -27,6 +27,9 @@ Core and Builtins Library ------- +- Issue #3313: Fixed a crash when a failed dlopen() call does not set + a valid dlerror() message. + - Issue #3258: Fixed a crash when a ctypes POINTER type to an incomplete structure was created. diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 0a305ed89d..d45278580f 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -1383,8 +1383,11 @@ static PyObject *py_dl_open(PyObject *self, PyObject *args) mode |= RTLD_NOW; handle = ctypes_dlopen(name, mode); if (!handle) { + char *errmsg = ctypes_dlerror(); + if (!errmsg) + errmsg = "dlopen() error"; PyErr_SetString(PyExc_OSError, - ctypes_dlerror()); + errmsg); return NULL; } return PyLong_FromVoidPtr(handle); |