From 8a37ffbf8c0776a38f2de18a63e885383960ee68 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Fri, 26 Jul 2019 12:07:21 +0200 Subject: irmd, lib: Improve libgcrypt init The proper initialization of libgrypt requires a call to gcry_check_version. The library initialization should first run a check if the application (or some other library) hasn't already initialized libgcrypt before attempting to initialize libgcrypt. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/irmd/main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/irmd/main.c') diff --git a/src/irmd/main.c b/src/irmd/main.c index 5875d7dc..f3a3ff87 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -2206,12 +2206,18 @@ static int irm_init(void) #endif #ifdef HAVE_LIBGCRYPT - if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P)) - goto fail_gcry_control; + if (!gcry_check_version(GCRYPT_VERSION)) { + log_err("Error checking libgcrypt version."); + goto fail_gcry_version; + } + + if (!gcry_control(GCRYCTL_ANY_INITIALIZATION_P)) { + log_err("Libgcrypt was not initialized."); + goto fail_gcry_version; + } gcry_control(GCRYCTL_INITIALIZATION_FINISHED); #endif - irmd_set_state(IRMD_RUNNING); log_info("Ouroboros IPC Resource Manager daemon started..."); @@ -2219,7 +2225,10 @@ static int irm_init(void) return 0; #ifdef HAVE_LIBGCRYPT - fail_gcry_control: + fail_gcry_version: +#ifdef HAVE_FUSE + rmdir(FUSE_PREFIX); +#endif shm_rdrbuff_destroy(irmd.rdrb); #endif fail_rdrbuff: -- cgit v1.2.3