From: Michael Tremer Date: Sat, 25 Nov 2017 14:06:18 +0000 (+0100) Subject: libpakfire: Initialize libgcrypt when we need it X-Git-Tag: 0.9.28~1285^2~1281 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=658c740d20e7805f234cedf7a662273c94ab2839;p=pakfire.git libpakfire: Initialize libgcrypt when we need it Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index ba21e11a0..dbe001abc 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -45,4 +45,6 @@ char* pakfire_dirname(const char* path); char* pakfire_sgets(char* str, int num, char** input); char* pakfire_remove_trailing_newline(char* str); +void init_libgcrypt(); + #endif /* PAKFIRE_UTIL_H */ diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index 62411512b..a4bf292cd 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -26,6 +26,8 @@ #include #include +#include + #include void pakfire_oom(size_t num, size_t len) { @@ -173,3 +175,22 @@ char* pakfire_remove_trailing_newline(char* str) { return str; } + +void init_libgcrypt() { + // Only execute this once + static int libgcrypt_initialized = 0; + if (libgcrypt_initialized++) + return; + + const char* version = gcry_check_version(NULL); + if (!version) { + fprintf(stderr, "Could not initialize libgcrypt\n"); + exit(1); + } + + // Disable secure memory + gcry_control(GCRYCTL_DISABLE_SECMEM, 0); + + // Tell libgcrypt that initialization has completed + gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); +}