From: Michael Brown Date: Thu, 9 Jun 2016 07:39:25 +0000 (+0100) Subject: [libc] Always use a non-zero seed for the (non-crypto) RNG X-Git-Tag: v1.20.1~432 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c197517f2a82970ab6866e197f06a3099418324;p=thirdparty%2Fipxe.git [libc] Always use a non-zero seed for the (non-crypto) RNG The non-cryptographic RNG implemented by random() has the property that a seed value of zero will result in a generated sequence of all-zero values. This situation can arise if currticks() returns zero at start of day. Work around this problem by falling back to a fixed non-zero seed if necessary. This has no effect on the separate DRBG used by cryptographic code. Signed-off-by: Michael Brown --- diff --git a/src/core/random.c b/src/core/random.c index a74175a79..975a03cf5 100644 --- a/src/core/random.c +++ b/src/core/random.c @@ -18,6 +18,8 @@ static int32_t rnd_seed = 0; */ void srandom ( unsigned int seed ) { rnd_seed = seed; + if ( ! rnd_seed ) + rnd_seed = 4; /* Chosen by fair dice roll */ } /**