about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2019-07-11 18:51:03 +0320
committerPaul Fariello <paul@fariello.eu>2019-07-11 14:25:42 +0200
commitc22df13d9548ac99ed7a50f462227523ee15d8ed (patch)
tree6e45287bd81a994f89a8eb0a730d1ebf0ae65466
parentb7144d82febae18c235772bf8abae3c7684f3109 (diff)
downloadprofani-tty-c22df13d9548ac99ed7a50f462227523ee15d8ed.tar.gz
Dirty fix libgcrypt memleak
-rw-r--r--prof.supp10
-rw-r--r--src/omemo/crypto.c5
2 files changed, 15 insertions, 0 deletions
diff --git a/prof.supp b/prof.supp
index bc9ca50a..f894dc75 100644
--- a/prof.supp
+++ b/prof.supp
@@ -1176,3 +1176,13 @@
    fun:SHA1_Update
 }
 
+
+# gcrypt initialization
+{
+  gcry_rngcsprng_randomize
+  Memcheck:Leak
+  fun:malloc
+  ...
+  fun:omemo_crypto_init
+  ...
+}
diff --git a/src/omemo/crypto.c b/src/omemo/crypto.c
index 81d7c922..5a67c3b1 100644
--- a/src/omemo/crypto.c
+++ b/src/omemo/crypto.c
@@ -55,6 +55,11 @@ omemo_crypto_init(void)
 
     gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
 
+    /* Ask for a first random buffer to ensure CSPRNG is initialized.
+     * Thus we control the memleak produced by gcrypt initialization and we can
+     * suppress it without having false negatives */
+    gcry_free(gcry_random_bytes_secure(1, GCRY_VERY_STRONG_RANDOM));
+
     return 0;
 }