libtnccs: Optionally use RTLD_NOW to load IMC/IMVs with dlopen()

This commit is contained in:
Tobias Brunner 2015-09-25 12:00:58 +02:00
parent 305c4aa82c
commit 50e4aeb22f
3 changed files with 16 additions and 4 deletions

View File

@ -66,8 +66,8 @@ charon.dh_exponent_ansi_x9_42 = yes
strength.
charon.dlopen_use_rtld_now = no
Use RTLD_NOW with dlopen when loading plugins to reveal missing symbols
immediately.
Use RTLD_NOW with dlopen when loading plugins and IMV/IMCs to reveal missing
symbols immediately.
charon.dns1
DNS server assigned to peer via configuration payload (CP).

View File

@ -349,10 +349,16 @@ static private_tnc_imc_t* tnc_imc_create_empty(char *name)
imc_t* tnc_imc_create(char *name, char *path)
{
private_tnc_imc_t *this;
int flag = RTLD_LAZY;
this = tnc_imc_create_empty(name);
this->handle = dlopen(path, RTLD_LAZY);
if (lib->settings->get_bool(lib->settings, "%s.dlopen_use_rtld_now",
lib->ns, FALSE))
{
flag = RTLD_NOW;
}
this->handle = dlopen(path, flag);
if (!this->handle)
{
DBG1(DBG_TNC, "IMC \"%s\" failed to load: %s", name, dlerror());

View File

@ -345,10 +345,16 @@ static private_tnc_imv_t* tnc_imv_create_empty(char *name)
imv_t* tnc_imv_create(char *name, char *path)
{
private_tnc_imv_t *this;
int flag = RTLD_LAZY;
this = tnc_imv_create_empty(name);
this->handle = dlopen(path, RTLD_LAZY);
if (lib->settings->get_bool(lib->settings, "%s.dlopen_use_rtld_now",
lib->ns, FALSE))
{
flag = RTLD_NOW;
}
this->handle = dlopen(path, flag);
if (!this->handle)
{
DBG1(DBG_TNC, "IMV \"%s\" failed to load: %s", name, dlerror());