From d30ba8414ae28ed1116e4120975497b8add45ea0 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 12 Dec 2022 10:47:46 +0100 Subject: [PATCH] plugin-manager: don't crash when loading an invalid shared utils library [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=, 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 --- src/mm-plugin-manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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);