Auto-seed random so user's can't request random values based on
authorBruce Momjian
Tue, 9 Jun 1998 19:20:59 +0000 (19:20 +0000)
committerBruce Momjian
Tue, 9 Jun 1998 19:20:59 +0000 (19:20 +0000)
our postmaster random seed used from cancel.

src/backend/utils/adt/misc.c

index 6913d8975e4206e674bffb7e0f164e60beee74fe..d91ea44e9517c700b88e06b8dd774ec9fb3a7ae9 100644 (file)
@@ -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;
 }