From 755c00a3604b3de3dc02daf880e79142c00bc9ca Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 9 Jun 1998 19:20:59 +0000 Subject: [PATCH] Auto-seed random so user's can't request random values based on our postmaster random seed used from cancel. --- src/backend/utils/adt/misc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 6913d8975e..d91ea44e95 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -7,12 +7,13 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.12 1998/02/24 03:47:26 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.13 1998/06/09 19:20:59 momjian Exp $ * *------------------------------------------------------------------------- */ #include #include +#include #include "postgres.h" #include "utils/datum.h" #include "catalog/pg_type.h" @@ -60,6 +61,9 @@ nonnullvalue(Datum value, bool *isNull) * will return about 1/10 of the tuples in TEMP * */ + +static bool random_initialized = false; + bool oidrand(Oid o, int32 X) { @@ -68,6 +72,17 @@ oidrand(Oid o, int32 X) if (X == 0) return true; + /* + * We do this because the cancel key is actually a random, so we don't + * want them to be able to request random numbers using our postmaster + * seeded value. + */ + if (!random_initialized) + { + srandom((unsigned int)time(NULL)); + random_initialized = true; + } + result = (random() % X == 0); return result; } @@ -81,6 +96,7 @@ bool oidsrand(int32 X) { srand(X); + random_initialized = true; return true; } -- GitLab