diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2022-12-12 10:47:46 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2023-01-03 13:56:25 +0000 |
commit | d30ba8414ae28ed1116e4120975497b8add45ea0 (patch) | |
tree | c34c65f810608b8da3aaf7f7436d82d9d1d001a6 /src | |
parent | 876e8537c4e37696e8a847d6a3fa71f125770450 (diff) |
plugin-manager: don't crash when loading an invalid shared utils library
<wrn> [plugin-manager] could not load shared '/usr/lib/ModemManager/libmm-shared-xmm.so': Missing major version info
Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault.
0x000055555562b79d in load_external_shared (path=<optimized out>, self=0x5555557b5880) at ../src/mm-plugin-manager.c:1885
1885 if (module && !(*shared_name))
(gdb) p module
$1 = (GModule *) 0x5555557b9670
(gdb) p shared_name
$2 = (const gchar **) 0x0
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-plugin-manager.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mm-plugin-manager.c b/src/mm-plugin-manager.c index 0f454bb7..2c22ab23 100644 --- a/src/mm-plugin-manager.c +++ b/src/mm-plugin-manager.c @@ -1753,6 +1753,7 @@ load_shared (MMPluginManager *self, const gchar **shared_name = NULL; gint *major_shared_version; gint *minor_shared_version; + gboolean success = FALSE; /* Get printable UTF-8 string of the path */ path_display = g_filename_display_name (path); @@ -1791,9 +1792,10 @@ load_shared (MMPluginManager *self, } mm_obj_dbg (self, "loaded shared '%s' utils from '%s'", *shared_name, path_display); + success = TRUE; out: - if (module && !(*shared_name)) + if (module && !success) g_module_close (module); g_free (path_display); |