File bash-4.0-security.patch of Package bash

--- variables.c
+++ variables.c	2009-12-04 09:31:06.579929599 +0000
@@ -1216,6 +1216,7 @@ static unsigned long rseed = 1;
 static int last_random_value;
 static int seeded_subshell = 0;
 
+#if !defined(linux)
 /* A linear congruential random number generator based on the example
    one in the ANSI C standard.  This one isn't very good, but a more
    complicated one is overkill. */
@@ -1264,6 +1265,32 @@ seedrand ()
   sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
 }
 
+#else
+/* Use ISO C Random Number Functions of the glibc */
+static int
+brand (void)
+{
+  if (rseed == 0)
+    seedrand ();
+  return rand() & 32767;
+}
+
+static void
+sbrand (unsigned long seed)
+{
+  rseed = seed;
+  srand(seed);
+}
+
+static void
+seedrand (void)
+{
+  struct timeval tv;
+  gettimeofday (&tv, NULL);
+  srand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
+}
+#endif
+
 static SHELL_VAR *
 assign_random (self, value, unused, key)
      SHELL_VAR *self;
openSUSE Build Service is sponsored by