libtnccs: Optionally use RTLD_NOW to load IMC/IMVs with dlopen()
This commit is contained in:
parent
305c4aa82c
commit
50e4aeb22f
|
@ -66,8 +66,8 @@ charon.dh_exponent_ansi_x9_42 = yes
|
||||||
strength.
|
strength.
|
||||||
|
|
||||||
charon.dlopen_use_rtld_now = no
|
charon.dlopen_use_rtld_now = no
|
||||||
Use RTLD_NOW with dlopen when loading plugins to reveal missing symbols
|
Use RTLD_NOW with dlopen when loading plugins and IMV/IMCs to reveal missing
|
||||||
immediately.
|
symbols immediately.
|
||||||
|
|
||||||
charon.dns1
|
charon.dns1
|
||||||
DNS server assigned to peer via configuration payload (CP).
|
DNS server assigned to peer via configuration payload (CP).
|
||||||
|
|
|
@ -349,10 +349,16 @@ static private_tnc_imc_t* tnc_imc_create_empty(char *name)
|
||||||
imc_t* tnc_imc_create(char *name, char *path)
|
imc_t* tnc_imc_create(char *name, char *path)
|
||||||
{
|
{
|
||||||
private_tnc_imc_t *this;
|
private_tnc_imc_t *this;
|
||||||
|
int flag = RTLD_LAZY;
|
||||||
|
|
||||||
this = tnc_imc_create_empty(name);
|
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)
|
if (!this->handle)
|
||||||
{
|
{
|
||||||
DBG1(DBG_TNC, "IMC \"%s\" failed to load: %s", name, dlerror());
|
DBG1(DBG_TNC, "IMC \"%s\" failed to load: %s", name, dlerror());
|
||||||
|
|
|
@ -345,10 +345,16 @@ static private_tnc_imv_t* tnc_imv_create_empty(char *name)
|
||||||
imv_t* tnc_imv_create(char *name, char *path)
|
imv_t* tnc_imv_create(char *name, char *path)
|
||||||
{
|
{
|
||||||
private_tnc_imv_t *this;
|
private_tnc_imv_t *this;
|
||||||
|
int flag = RTLD_LAZY;
|
||||||
|
|
||||||
this = tnc_imv_create_empty(name);
|
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)
|
if (!this->handle)
|
||||||
{
|
{
|
||||||
DBG1(DBG_TNC, "IMV \"%s\" failed to load: %s", name, dlerror());
|
DBG1(DBG_TNC, "IMV \"%s\" failed to load: %s", name, dlerror());
|
||||||
|
|
Loading…
Reference in New Issue