diff options
author | Peter Wu <peter@lekensteyn.nl> | 2016-01-13 13:04:24 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-01-31 13:31:28 +0000 |
commit | 057b8d7dde25f638a13de45d8e3fcb51da7fb28d (patch) | |
tree | c032f84c3385ee00545dd7a65a6b43841e3ab4d1 | |
parent | 2bf715dcc23cb3e8595e2726a9ae419389eeb05e (diff) |
plugins: do not import symbols globally
Clang's ASAN reported an ODR violation when plugins were loaded. Sure
enough, symbols did actually get loaded twice:
==5898==ERROR: AddressSanitizer: odr-violation (0x7fffd95a35e0):
[1] size=7 'version' plugins/mate/plugin.c:19:31
[2] size=6 'version' plugins/opcua/plugin.c:19:31
After this change, plugins cannot insert new symbols in the global
namespace.
Change-Id: Ib11f7263e9c586f8e7c1f8f5fb239b20d46ddd2f
Reviewed-on: https://code.wireshark.org/review/13260
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | tools/test-common.sh | 2 | ||||
-rw-r--r-- | wsutil/plugins.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/tools/test-common.sh b/tools/test-common.sh index 1b54cebbcc..ccac973bf2 100644 --- a/tools/test-common.sh +++ b/tools/test-common.sh @@ -121,7 +121,7 @@ export MallocCheckHeapAbort=1 export MallocBadFreeAbort=1 # Address Sanitizer options -export ASAN_OPTIONS=detect_leaks=0:detect_odr_violation=0 +export ASAN_OPTIONS=detect_leaks=0 # Create an error report function ws_exit_error() { diff --git a/wsutil/plugins.c b/wsutil/plugins.c index 64a8a66a26..ec3800bdf0 100644 --- a/wsutil/plugins.c +++ b/wsutil/plugins.c @@ -172,7 +172,7 @@ plugins_scan_dir(const char *dirname) g_snprintf(filename, FILENAME_LEN, "%s" G_DIR_SEPARATOR_S "%s", dirname, name); - if ((handle = g_module_open(filename, (GModuleFlags)0)) == NULL) + if ((handle = g_module_open(filename, G_MODULE_BIND_LOCAL)) == NULL) { report_failure("Couldn't load module %s: %s", filename, g_module_error()); |