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/lib/dev.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/lib/dev.c') diff --git a/src/lib/dev.c b/src/lib/dev.c index ee7839c8..229a1470 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -344,8 +344,13 @@ static void init(int argc, ai.pid = getpid(); #ifdef HAVE_LIBGCRYPT - if (!gcry_check_version(GCRYPT_VERSION)) - goto fail_fds; + if (!gcry_control (GCRYCTL_INITIALIZATION_FINISHED_P)) { + if (!gcry_check_version(GCRYPT_VERSION)) + goto fail_fds; + /* Needs to be enabled when we add encryption. */ + gcry_control (GCRYCTL_DISABLE_SECMEM, 0); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); + } #endif ai.fds = bmp_create(PROG_MAX_FLOWS - PROG_RES_FDS, PROG_RES_FDS); if (ai.fds == NULL) -- cgit v1.2.3