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>
This commit is contained in:
Peter Wu 2016-01-13 13:04:24 +01:00 committed by Michael Mann
parent 2bf715dcc2
commit 057b8d7dde
2 changed files with 2 additions and 2 deletions

View File

@ -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() {

View File

@ -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());