#include <dlfcn.h>
#include <limits.h>
#include <stdio.h>
+#include <link.h>
#include <debug.h>
+#include <integrity_checker.h>
#include <utils/linked_list.h>
#include <plugins/plugin.h>
snprintf(file, sizeof(file), "%s/libstrongswan-%s.so", path, name);
+ if (lib->integrity &&
+ !lib->integrity->check_file(lib->integrity, name, file))
+ {
+ DBG1("file integrity test of plugin '%s' failed", name);
+ return NULL;
+ }
handle = dlopen(file, RTLD_LAZY);
if (handle == NULL)
{
dlclose(handle);
return NULL;
}
+ if (lib->integrity &&
+ !lib->integrity->check_segment(lib->integrity, name, constructor))
+ {
+ DBG1("segment integrity test of plugin '%s' failed", name);
+ dlclose(handle);
+ return NULL;
+ }
plugin = constructor();
if (plugin == NULL)
{