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