summary refs log tree commit diff
path: root/pkgs/development/libraries/libgcrypt
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2018-06-17 18:56:22 -0500
committerWill Dietz <w@wdtz.org>2018-06-20 14:03:08 -0500
commit7cfdb8950d93888811fbd2da3a575521d8781ace (patch)
tree8454e6260b4ff558ea04f8e175fe0372b7868201 /pkgs/development/libraries/libgcrypt
parent5039d6ed1f5354289d9b59f798201108db277113 (diff)
downloadnixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar.gz
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar.bz2
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar.lz
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar.xz
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.tar.zst
nixpkgs-7cfdb8950d93888811fbd2da3a575521d8781ace.zip
libgcrypt: keep new lock behavior but only do so around collector access
Not around a function that itself will grab the rng lock.

Unfortunate that we obtain/release the lock twice
but this seems least invasive way to fix this.
Diffstat (limited to 'pkgs/development/libraries/libgcrypt')
-rw-r--r--pkgs/development/libraries/libgcrypt/default.nix2
-rw-r--r--pkgs/development/libraries/libgcrypt/fix-jent-locking.patch29
2 files changed, 31 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix
index de657bc9c34..1a9e19ede23 100644
--- a/pkgs/development/libraries/libgcrypt/default.nix
+++ b/pkgs/development/libraries/libgcrypt/default.nix
@@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
   # The build enables -O2 by default for everything else.
   hardeningDisable = stdenv.lib.optional stdenv.cc.isClang "fortify";
 
+  patches = [ ./fix-jent-locking.patch ];
+
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
   buildInputs = [ libgpgerror ]
diff --git a/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch b/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch
new file mode 100644
index 00000000000..5394e51468e
--- /dev/null
+++ b/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch
@@ -0,0 +1,29 @@
+From bbe989be6ca5e093d5244413590bd80e12c2ec9b Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Sun, 17 Jun 2018 18:53:58 -0500
+Subject: [PATCH] rndjent: move locking to fix trying to obtain held lock,
+ hanging
+
+---
+ random/rndjent.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/random/rndjent.c b/random/rndjent.c
+index 0c5a820b..3740ddd4 100644
+--- a/random/rndjent.c
++++ b/random/rndjent.c
+@@ -334,9 +334,10 @@ _gcry_rndjent_get_version (int *r_active)
+     {
+       if (r_active)
+         {
+-          lock_rng ();
+           /* Make sure the RNG is initialized.  */
+           _gcry_rndjent_poll (NULL, 0, 0);
++
++          lock_rng ();
+           /* To ease debugging we store 2 for a clock_gettime based
+            * implementation and 1 for a rdtsc based code.  */
+           *r_active = jent_rng_collector? is_rng_available () : 0;
+-- 
+2.18.0-rc2
+