f9a702
diff -up libgcrypt-1.5.3/random/drbg.c.drbg-init libgcrypt-1.5.3/random/drbg.c
f9a702
--- libgcrypt-1.5.3/random/drbg.c.drbg-init	2017-02-28 14:28:55.000000000 +0100
f9a702
+++ libgcrypt-1.5.3/random/drbg.c	2017-02-28 15:15:54.401291408 +0100
f9a702
@@ -1820,12 +1820,16 @@ _gcry_drbg_randomize (void *buffer, size
f9a702
 		      enum gcry_random_level level)
f9a702
 {
f9a702
   (void) level;
f9a702
-  gcry_drbg_lock ();
f9a702
   if (NULL == gcry_drbg)
f9a702
     {
f9a702
-      fips_signal_error ("DRBG is not initialized");
f9a702
-      goto bailout;
f9a702
+      _gcry_drbg_init(1);
f9a702
+      if (NULL == gcry_drbg)
f9a702
+        {
f9a702
+          log_fatal ("DRBG is not initialized\n");
f9a702
+          goto bailout;
f9a702
+        }
f9a702
     }
f9a702
+  gcry_drbg_lock ();
f9a702
 
f9a702
   /* As reseeding changes the entire state of the DRBG, including any
f9a702
    * key, either a re-init or a reseed is sufficient for a fork */