aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2022-12-12 10:47:46 +0100
committerAleksander Morgado <aleksander@aleksander.es>2023-01-03 13:56:25 +0000
commitd30ba8414ae28ed1116e4120975497b8add45ea0 (patch)
treec34c65f810608b8da3aaf7f7436d82d9d1d001a6 /src
parent876e8537c4e37696e8a847d6a3fa71f125770450 (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.c4
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);