From: Vsevolod Stakhov Date: Mon, 15 Mar 2021 20:19:48 +0000 (+0000) Subject: [Minor] Automatically init xoroshifto PRG X-Git-Tag: 3.0~580 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92f20993f94c91ad03213c5fcc2984ee3b487a67;p=thirdparty%2Frspamd.git [Minor] Automatically init xoroshifto PRG --- diff --git a/src/libutil/util.c b/src/libutil/util.c index 47856f716d..49d61e87e2 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -1766,7 +1766,19 @@ rspamd_random_double (void) } -static guint64 xorshifto_seed[4]; +static guint64* +xorshifto_seed (void) +{ + static guint64 xorshifto_seed[4]; + static bool initialized = false; + + if (G_UNLIKELY(!initialized)) { + ottery_rand_bytes((void *)xorshifto_seed, sizeof (xorshifto_seed)); + initialized = true; + } + + return xorshifto_seed; +} static inline guint64 xoroshiro_rotl (const guint64 x, int k) { @@ -1776,7 +1788,7 @@ xoroshiro_rotl (const guint64 x, int k) { gdouble rspamd_random_double_fast (void) { - return rspamd_random_double_fast_seed (xorshifto_seed); + return rspamd_random_double_fast_seed (xorshifto_seed()); } /* xoshiro256+ */ @@ -1822,13 +1834,13 @@ rspamd_random_uint64_fast_seed (guint64 seed[4]) guint64 rspamd_random_uint64_fast (void) { - return rspamd_random_uint64_fast_seed (xorshifto_seed); + return rspamd_random_uint64_fast_seed (xorshifto_seed()); } void rspamd_random_seed_fast (void) { - ottery_rand_bytes (xorshifto_seed, sizeof (xorshifto_seed)); + (void)xorshifto_seed(); } gdouble