]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Auto-seed random so user's can't request random values based on
authorBruce Momjian <bruce@momjian.us>
Tue, 9 Jun 1998 19:20:59 +0000 (19:20 +0000)
committerBruce Momjian <bruce@momjian.us>
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 <sys/types.h>
 #include <sys/file.h>
+#include <time.h>
 #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;
 }