- Update to the Improve bash $RANDOM pseudo RNG (bug #234906) now works
with subshells and make $RANDOM on demand thus reducing the amount of AVCs thrown.
This commit is contained in:
parent
a2a31879cb
commit
eeaaae09ac
@ -1,6 +1,30 @@
|
|||||||
--- bash-3.2/configure.in.rng 2007-04-05 11:07:40.000000000 +0200
|
diff -up bash-3.2/config.h.in.rng.patch bash-3.2/config.h.in
|
||||||
+++ bash-3.2/configure.in 2007-04-05 11:07:41.000000000 +0200
|
--- bash-3.2/config.h.in.rng.patch 2007-08-20 13:42:49.000000000 +0200
|
||||||
@@ -111,6 +111,7 @@
|
+++ bash-3.2/config.h.in 2007-08-20 13:42:49.000000000 +0200
|
||||||
|
@@ -203,6 +203,8 @@
|
||||||
|
|
||||||
|
#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
|
||||||
|
|
||||||
|
+#undef PATH_RANDOMDEV
|
||||||
|
+
|
||||||
|
/* Characteristics of the system's header files and libraries that affect
|
||||||
|
the compilation environment. */
|
||||||
|
|
||||||
|
@@ -817,6 +819,10 @@
|
||||||
|
/* Define if you have the wcwidth function. */
|
||||||
|
#undef HAVE_WCWIDTH
|
||||||
|
|
||||||
|
+#undef HAVE_RANDOM
|
||||||
|
+
|
||||||
|
+#undef HAVE_SRANDOM
|
||||||
|
+
|
||||||
|
/* Presence of certain system include files. */
|
||||||
|
|
||||||
|
/* Define if you have the <arpa/inet.h> header file. */
|
||||||
|
diff -up bash-3.2/configure.in.rng.patch bash-3.2/configure.in
|
||||||
|
--- bash-3.2/configure.in.rng.patch 2007-08-20 13:42:49.000000000 +0200
|
||||||
|
+++ bash-3.2/configure.in 2007-08-20 13:42:49.000000000 +0200
|
||||||
|
@@ -111,6 +111,7 @@ AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([
|
||||||
AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
|
AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
|
||||||
AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
|
AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
|
||||||
AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
|
AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
|
||||||
@ -8,7 +32,7 @@
|
|||||||
|
|
||||||
if test "$opt_bash_malloc" = yes; then
|
if test "$opt_bash_malloc" = yes; then
|
||||||
MALLOC_TARGET=malloc
|
MALLOC_TARGET=malloc
|
||||||
@@ -152,6 +153,15 @@
|
@@ -152,6 +153,15 @@ if test -z "${DEBUGGER_START_FILE}"; the
|
||||||
DEBUGGER_START_FILE=${ac_default_prefix}/share/bashdb/bashdb-main.inc
|
DEBUGGER_START_FILE=${ac_default_prefix}/share/bashdb/bashdb-main.inc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -24,7 +48,7 @@
|
|||||||
dnl optional shell features in config.h.in
|
dnl optional shell features in config.h.in
|
||||||
opt_minimal_config=no
|
opt_minimal_config=no
|
||||||
|
|
||||||
@@ -708,6 +718,8 @@
|
@@ -708,6 +718,8 @@ AC_CHECK_FUNCS(bcopy bzero confstr fnmat
|
||||||
setenv setlinebuf setlocale setvbuf siginterrupt strchr \
|
setenv setlinebuf setlocale setvbuf siginterrupt strchr \
|
||||||
sysconf tcgetattr times ttyname tzset unsetenv)
|
sysconf tcgetattr times ttyname tzset unsetenv)
|
||||||
|
|
||||||
@ -33,30 +57,9 @@
|
|||||||
AC_CHECK_FUNCS(vsnprintf snprintf vasprintf asprintf)
|
AC_CHECK_FUNCS(vsnprintf snprintf vasprintf asprintf)
|
||||||
AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
|
AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
|
||||||
AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
|
AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
|
||||||
--- bash-3.2/config.h.in.rng 2007-04-05 11:07:40.000000000 +0200
|
diff -up bash-3.2/variables.c.rng.patch bash-3.2/variables.c
|
||||||
+++ bash-3.2/config.h.in 2007-04-05 11:07:41.000000000 +0200
|
--- bash-3.2/variables.c.rng.patch 2006-09-08 19:33:32.000000000 +0200
|
||||||
@@ -203,6 +203,8 @@
|
+++ bash-3.2/variables.c 2007-08-20 16:16:56.000000000 +0200
|
||||||
|
|
||||||
#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
|
|
||||||
|
|
||||||
+#undef PATH_RANDOMDEV
|
|
||||||
+
|
|
||||||
/* Characteristics of the system's header files and libraries that affect
|
|
||||||
the compilation environment. */
|
|
||||||
|
|
||||||
@@ -815,6 +817,10 @@
|
|
||||||
/* Define if you have the wcwidth function. */
|
|
||||||
#undef HAVE_WCWIDTH
|
|
||||||
|
|
||||||
+#undef HAVE_RANDOM
|
|
||||||
+
|
|
||||||
+#undef HAVE_SRANDOM
|
|
||||||
+
|
|
||||||
/* Presence of certain system include files. */
|
|
||||||
|
|
||||||
/* Define if you have the <arpa/inet.h> header file. */
|
|
||||||
--- bash-3.2/variables.c.rng 2006-09-08 19:33:32.000000000 +0200
|
|
||||||
+++ bash-3.2/variables.c 2007-04-05 11:53:03.000000000 +0200
|
|
||||||
@@ -42,6 +42,11 @@
|
@@ -42,6 +42,11 @@
|
||||||
#include "bashansi.h"
|
#include "bashansi.h"
|
||||||
#include "bashintl.h"
|
#include "bashintl.h"
|
||||||
@ -69,7 +72,7 @@
|
|||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "execute_cmd.h"
|
#include "execute_cmd.h"
|
||||||
@@ -182,7 +187,8 @@
|
@@ -182,7 +187,8 @@ static SHELL_VAR *get_seconds __P((SHELL
|
||||||
static SHELL_VAR *init_seconds_var __P((void));
|
static SHELL_VAR *init_seconds_var __P((void));
|
||||||
|
|
||||||
static int brand __P((void));
|
static int brand __P((void));
|
||||||
@ -79,16 +82,17 @@
|
|||||||
static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t));
|
static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t));
|
||||||
static SHELL_VAR *get_random __P((SHELL_VAR *));
|
static SHELL_VAR *get_random __P((SHELL_VAR *));
|
||||||
|
|
||||||
@@ -495,7 +501,7 @@
|
@@ -494,9 +500,6 @@ initialize_shell_variables (env, privmod
|
||||||
|
}
|
||||||
#endif /* HISTORY */
|
#endif /* HISTORY */
|
||||||
|
|
||||||
/* Seed the random number generator. */
|
- /* Seed the random number generator. */
|
||||||
- sbrand (dollar_dollar_pid + shell_start_time);
|
- sbrand (dollar_dollar_pid + shell_start_time);
|
||||||
+ seed_random();
|
-
|
||||||
|
|
||||||
/* Handle some "special" variables that we may have inherited from a
|
/* Handle some "special" variables that we may have inherited from a
|
||||||
parent shell. */
|
parent shell. */
|
||||||
@@ -1143,7 +1149,9 @@
|
if (interactive_shell)
|
||||||
|
@@ -1143,9 +1146,11 @@ init_seconds_var ()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The random number seed. You can change this by setting RANDOM. */
|
/* The random number seed. You can change this by setting RANDOM. */
|
||||||
@ -96,9 +100,12 @@
|
|||||||
static unsigned long rseed = 1;
|
static unsigned long rseed = 1;
|
||||||
+#endif
|
+#endif
|
||||||
static int last_random_value;
|
static int last_random_value;
|
||||||
static int seeded_subshell = 0;
|
-static int seeded_subshell = 0;
|
||||||
|
+static int seeded_subshell = -1;
|
||||||
|
|
||||||
@@ -1155,26 +1163,56 @@
|
/* 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
|
||||||
|
@@ -1155,28 +1160,58 @@ static int seeded_subshell = 0;
|
||||||
static int
|
static int
|
||||||
brand ()
|
brand ()
|
||||||
{
|
{
|
||||||
@ -110,7 +117,7 @@
|
|||||||
+#endif
|
+#endif
|
||||||
return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */
|
return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */
|
||||||
}
|
}
|
||||||
-
|
|
||||||
/* Set the random number generator seed to SEED. */
|
/* Set the random number generator seed to SEED. */
|
||||||
static void
|
static void
|
||||||
sbrand (seed)
|
sbrand (seed)
|
||||||
@ -154,16 +161,24 @@
|
|||||||
arrayind_t unused;
|
arrayind_t unused;
|
||||||
{
|
{
|
||||||
- sbrand (strtoul (value, (char **)NULL, 10));
|
- sbrand (strtoul (value, (char **)NULL, 10));
|
||||||
|
- if (subshell_environment)
|
||||||
|
- seeded_subshell = 1;
|
||||||
+ sbrand ((unsigned int)strtoul (value, (char **)NULL, 10));
|
+ sbrand ((unsigned int)strtoul (value, (char **)NULL, 10));
|
||||||
if (subshell_environment)
|
+ seeded_subshell = subshell_level;
|
||||||
seeded_subshell = 1;
|
|
||||||
return (self);
|
return (self);
|
||||||
@@ -1188,7 +1226,7 @@
|
|
||||||
/* Reset for command and process substitution. */
|
|
||||||
if (subshell_environment && seeded_subshell == 0)
|
|
||||||
{
|
|
||||||
- sbrand (rseed + getpid() + NOW);
|
|
||||||
+ seed_random ();
|
|
||||||
seeded_subshell = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1186,10 +1221,10 @@ get_random_number ()
|
||||||
|
int rv;
|
||||||
|
|
||||||
|
/* Reset for command and process substitution. */
|
||||||
|
- if (subshell_environment && seeded_subshell == 0)
|
||||||
|
+ if (seeded_subshell < subshell_level)
|
||||||
|
{
|
||||||
|
- sbrand (rseed + getpid() + NOW);
|
||||||
|
- seeded_subshell = 1;
|
||||||
|
+ seed_random ();
|
||||||
|
+ seeded_subshell = subshell_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Version: 3.2
|
Version: 3.2
|
||||||
Name: bash
|
Name: bash
|
||||||
Summary: The GNU Bourne Again shell (bash) version %{version}
|
Summary: The GNU Bourne Again shell (bash) version %{version}
|
||||||
Release: 14%{?dist}
|
Release: 15%{?dist}
|
||||||
Group: System Environment/Shells
|
Group: System Environment/Shells
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Url: http://www.gnu.org/software/bash
|
Url: http://www.gnu.org/software/bash
|
||||||
@ -240,12 +240,12 @@ fi
|
|||||||
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Aug 20 2007 Pete Graner <pgraner@redhat.com> - 3.2-14
|
* Mon Aug 20 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
|
||||||
- Update to the Improve bash $RANDOM pseudo RNG (bug #234906)
|
- Update to the Improve bash $RANDOM pseudo RNG (bug #234906)
|
||||||
now works with subshells and make $RANDOM on demand thus reducing the
|
now works with subshells and make $RANDOM on demand thus reducing the
|
||||||
amount of AVCs thrown.
|
amount of AVCs thrown.
|
||||||
|
|
||||||
* Thu Aug 16 2007 Pete Graner <pgraner@redhat.com> - 3.2-14
|
* Thu Aug 16 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
|
||||||
- Changed spec file License to GPLv2+
|
- Changed spec file License to GPLv2+
|
||||||
|
|
||||||
* Wed Aug 15 2007 Pete Graner <pgraner@redhat.com> - 3.2-13
|
* Wed Aug 15 2007 Pete Graner <pgraner@redhat.com> - 3.2-13
|
||||||
|
Loading…
Reference in New Issue
Block a user