journal: initialize libgcrypt explicitly, before using HMAC
authorLennart Poettering <lennart@poettering.net>
Mon, 20 Aug 2012 23:43:37 +0000 (01:43 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 20 Aug 2012 23:44:38 +0000 (01:44 +0200)
src/journal/journal-authenticate.c

index fd81797..fe5b6bd 100644 (file)
@@ -413,12 +413,26 @@ finish:
         return r;
 }
 
+static void initialize_libgcrypt(void) {
+        const char *p;
+
+        if (gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
+                return;
+
+        p = gcry_check_version("1.4.5");
+        assert(p);
+
+        gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+}
+
 int journal_file_hmac_setup(JournalFile *f) {
         gcry_error_t e;
 
         if (!f->seal)
                 return 0;
 
+        initialize_libgcrypt();
+
         e = gcry_md_open(&f->hmac, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC);
         if (e != 0)
                 return -ENOTSUP;