diff --git a/src/charon/daemon.c b/src/charon/daemon.c index c646ef9b4..f6f3ac17c 100644 --- a/src/charon/daemon.c +++ b/src/charon/daemon.c @@ -686,7 +686,10 @@ int main(int argc, char *argv[]) dbg = dbg_stderr; /* initialize library */ - library_init(STRONGSWAN_CONF); + if (!library_init(STRONGSWAN_CONF)) + { + exit(-1); + } lib->printf_hook->add_handler(lib->printf_hook, 'R', traffic_selector_printf_hook, PRINTF_HOOK_ARGTYPE_POINTER, diff --git a/src/libstrongswan/library.c b/src/libstrongswan/library.c index ae2d8a98d..217dbc045 100644 --- a/src/libstrongswan/library.c +++ b/src/libstrongswan/library.c @@ -86,7 +86,7 @@ void library_deinit() /* * see header file */ -void library_init(char *settings) +bool library_init(char *settings) { printf_hook_t *pfh; private_library_t *this = malloc_thing(private_library_t); @@ -136,7 +136,9 @@ void library_init(char *settings) "libstrongswan", library_init)) { DBG1("integrity check of libstrongswan failed"); + return FALSE; } } + return TRUE; } diff --git a/src/libstrongswan/library.h b/src/libstrongswan/library.h index f1cbb90eb..3f62b24d5 100644 --- a/src/libstrongswan/library.h +++ b/src/libstrongswan/library.h @@ -123,8 +123,9 @@ struct library_t { * Initialize library, creates "lib" instance. * * @param settings file to read settings from, may be NULL for none + * @return FALSE if integrity check failed */ -void library_init(char *settings); +bool library_init(char *settings); /** * Deinitialize library, destroys "lib" instance. diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c index 39367cafa..a9377cba7 100644 --- a/src/pluto/plutomain.c +++ b/src/pluto/plutomain.c @@ -265,7 +265,10 @@ int main(int argc, char **argv) #endif /* CAPABILITIES */ /* initialize library and optionsfrom */ - library_init(STRONGSWAN_CONF); + if (!library_init(STRONGSWAN_CONF)) + { + abort(); + } options = options_create(); /* handle arguments */