Patch level 33. Specfile and cvs cleanup.

This commit is contained in:
Roman Rakus 2009-09-16 10:07:27 +00:00
parent bdb42f7333
commit 779eedaab4
11 changed files with 344 additions and 292 deletions

View File

@ -1,184 +0,0 @@
diff -up bash-3.2/config.h.in.rng.patch bash-3.2/config.h.in
--- bash-3.2/config.h.in.rng.patch 2007-08-20 13:42:49.000000000 +0200
+++ 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(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(random, AC_HELP_STRING([--with-randomdev=path], [use specified random device instead of /dev/urandom]), opt_randomdev=$withval)
if test "$opt_bash_malloc" = yes; then
MALLOC_TARGET=malloc
@@ -152,6 +153,15 @@ if test -z "${DEBUGGER_START_FILE}"; the
DEBUGGER_START_FILE=${ac_default_prefix}/share/bashdb/bashdb-main.inc
fi
+if test "$opt_randomdev" = yes -o -z "$opt_randomdev"; then
+ opt_randomdev="/dev/urandom"
+elif test "$opt_randomdev" = no; then
+ opt_randomdev=
+fi
+if test -n "$opt_randomdev"; then
+ AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$opt_randomdev", [Random device path.])
+fi
+
dnl optional shell features in config.h.in
opt_minimal_config=no
@@ -708,6 +718,8 @@ AC_CHECK_FUNCS(bcopy bzero confstr fnmat
setenv setlinebuf setlocale setvbuf siginterrupt strchr \
sysconf tcgetattr times ttyname tzset unsetenv)
+AC_CHECK_FUNCS(random srandom)
+
AC_CHECK_FUNCS(vsnprintf snprintf vasprintf asprintf)
AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
diff -up bash-3.2/variables.c.rng.patch bash-3.2/variables.c
--- bash-3.2/variables.c.rng.patch 2006-09-08 19:33:32.000000000 +0200
+++ bash-3.2/variables.c 2007-08-20 16:16:56.000000000 +0200
@@ -42,6 +42,11 @@
#include "bashansi.h"
#include "bashintl.h"
+#if defined (PATH_RANDOMDEV)
+# include <errno.h>
+# include "filecntl.h"
+#endif
+
#include "shell.h"
#include "flags.h"
#include "execute_cmd.h"
@@ -182,7 +187,8 @@ static SHELL_VAR *get_seconds __P((SHELL
static SHELL_VAR *init_seconds_var __P((void));
static int brand __P((void));
-static void sbrand __P((unsigned long)); /* set bash random number generator. */
+static void sbrand __P((unsigned int)); /* set bash random number generator. */
+static void seed_random __P((void)); /* seed the generator randomly */
static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t));
static SHELL_VAR *get_random __P((SHELL_VAR *));
@@ -494,9 +500,6 @@ initialize_shell_variables (env, privmod
}
#endif /* HISTORY */
- /* Seed the random number generator. */
- sbrand (dollar_dollar_pid + shell_start_time);
-
/* Handle some "special" variables that we may have inherited from a
parent shell. */
if (interactive_shell)
@@ -1143,9 +1146,11 @@ init_seconds_var ()
}
/* The random number seed. You can change this by setting RANDOM. */
+#if !defined (HAVE_RANDOM)
static unsigned long rseed = 1;
+#endif
static int last_random_value;
-static int seeded_subshell = 0;
+static int seeded_subshell = -1;
/* 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
brand ()
{
+#if defined (HAVE_RANDOM)
+ unsigned int rseed;
+ rseed = random();
+#else
rseed = rseed * 1103515245 + 12345;
+#endif
return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */
}
/* Set the random number generator seed to SEED. */
static void
sbrand (seed)
- unsigned long seed;
+ unsigned int seed;
{
+#if defined (HAVE_RANDOM)
+ srandom((unsigned int)seed);
+#else
rseed = seed;
+#endif
last_random_value = 0;
}
+static void
+seed_random ()
+{
+ unsigned int seed;
+#if defined (PATH_RANDOMDEV)
+ int fd;
+ int rv;
+ if ((rv = fd = open (PATH_RANDOMDEV, O_RDONLY)) != -1) {
+ while ((rv = read(fd, &seed, sizeof(seed))) != sizeof(seed) && errno == EINTR);
+ close (fd);
+ }
+ if (rv != sizeof(seed)) {
+#endif
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ seed = (unsigned int)tv.tv_sec + (unsigned int)tv.tv_usec + getpid();
+#if defined (PATH_RANDOMDEV)
+ }
+#endif
+ sbrand (seed);
+}
+
static SHELL_VAR *
assign_random (self, value, unused)
SHELL_VAR *self;
char *value;
arrayind_t unused;
{
- sbrand (strtoul (value, (char **)NULL, 10));
- if (subshell_environment)
- seeded_subshell = 1;
+ sbrand ((unsigned int)strtoul (value, (char **)NULL, 10));
+ seeded_subshell = subshell_level;
return (self);
}
@@ -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

View File

@ -1,11 +0,0 @@
diff -up bash-4.0/assoc.c.key_alloc bash-4.0/assoc.c
--- bash-4.0/assoc.c.key_alloc 2009-08-26 16:17:50.000000000 +0200
+++ bash-4.0/assoc.c 2009-08-26 16:18:42.000000000 +0200
@@ -77,6 +77,7 @@ assoc_insert (hash, key, value)
b = hash_search (key, hash, HASH_CREATE);
if (b == 0)
return -1;
+ b->key = savestring (key);
FREE (b->data);
b->data = value ? savestring (value) : (char *)0;
return (0);

View File

@ -1,39 +0,0 @@
diff -up bash-4.0-rc1/error.h.no_debug_output bash-4.0-rc1/error.h
--- bash-4.0-rc1/error.h.no_debug_output 2009-01-08 14:32:45.000000000 +0100
+++ bash-4.0-rc1/error.h 2009-01-29 14:39:16.000000000 +0100
@@ -51,8 +51,10 @@ extern void internal_error __P((const ch
extern void internal_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Debugging functions, not enabled in released version. */
+#if defined (DEBUG)
extern void itrace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2)));
extern void trace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2)));
+#endif
/* Report an error having to do with command parsing or execution. */
extern void command_error __P((const char *, int, int, int));
diff -up bash-4.0-rc1/builtins/evalstring.c.no_debug_output bash-4.0-rc1/builtins/evalstring.c
--- bash-4.0-rc1/builtins/evalstring.c.no_debug_output 2009-01-04 20:32:22.000000000 +0100
+++ bash-4.0-rc1/builtins/evalstring.c 2009-01-29 14:39:16.000000000 +0100
@@ -268,7 +268,9 @@ parse_and_execute (string, from_file, fl
if ((subshell_environment & SUBSHELL_COMSUB) && comsub_ignore_return)
{
command->flags |= CMD_IGNORE_RETURN;
+#if defined (DEBUG)
itrace("parse_and_execute: turned on CMD_IGNORE_RETURN from comsub_ignore_return");
+#endif
}
#if defined (ONESHOT)
diff -up bash-4.0-rc1/Makefile.in.no_debug_output bash-4.0-rc1/Makefile.in
--- bash-4.0-rc1/Makefile.in.no_debug_output 2009-01-29 14:40:11.000000000 +0100
+++ bash-4.0-rc1/Makefile.in 2009-01-29 14:40:54.000000000 +0100
@@ -112,7 +112,7 @@ VENDOR = @host_vendor@
MACHTYPE = @host@
# comment out for release
-DEBUG = @DEBUG@
+#DEBUG = @DEBUG@
MALLOC_DEBUG = @MALLOC_DEBUG@
THIS_SH = $(BUILD_DIR)/$(Program)

View File

@ -1,21 +0,0 @@
diff -up bash-4.0-rc1/execute_cmd.c.shell_pipelines_handling bash-4.0-rc1/execute_cmd.c
--- bash-4.0-rc1/execute_cmd.c.shell_pipelines_handling 2009-02-11 12:56:13.000000000 +0100
+++ bash-4.0-rc1/execute_cmd.c 2009-02-11 12:57:20.000000000 +0100
@@ -756,7 +756,7 @@ execute_command_internal (command, async
the presence of a pipeline, and (until Posix changes things), a
pipeline failure should not cause the parent shell to exit on an
unsuccessful return status, even in the presence of errexit.. */
- if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)
+ if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
run_error_trap ();
@@ -764,7 +764,7 @@ execute_command_internal (command, async
if (ignore_return == 0 && invert == 0 &&
((posixly_correct && interactive == 0 && special_builtin_failed) ||
- (exit_immediately_on_error && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)))
+ (exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)))
{
last_command_exit_value = exec_result;
run_pending_traps ();

View File

@ -1,24 +0,0 @@
diff -up bash-4.0/doc/bash.1.ulimit-m bash-4.0/doc/bash.1
--- bash-4.0/doc/bash.1.ulimit-m 2009-01-21 16:31:19.000000000 +0100
+++ bash-4.0/doc/bash.1 2009-01-21 16:31:19.000000000 +0100
@@ -9044,7 +9044,7 @@ The maximum number of pending signals
The maximum size that may be locked into memory
.TP
.B \-m
-The maximum resident set size
+The maximum resident set size (has no effect on Linux)
.TP
.B \-n
The maximum number of open file descriptors (most systems do not
diff -up bash-4.0/builtins/ulimit.def.ulimit-m bash-4.0/builtins/ulimit.def
--- bash-4.0/builtins/ulimit.def.ulimit-m 2009-01-04 20:32:23.000000000 +0100
+++ bash-4.0/builtins/ulimit.def 2009-01-21 16:36:12.000000000 +0100
@@ -40,7 +40,7 @@ Options:
-f the maximum size of files written by the shell and its children
-i the maximum number of pending signals
-l the maximum size a process may lock into memory
- -m the maximum resident set size
+ -m the maximum resident set size (has no effect on Linux)
-n the maximum number of open file descriptors
-p the pipe buffer size
-q the maximum number of bytes in POSIX message queues

View File

@ -1,11 +1,11 @@
#%define beta_tag rc1
%define patchlevel .28
%define patchlevel .33
%define baseversion 4.0
Version: %{baseversion}%{patchlevel}
Name: bash
Summary: The GNU Bourne Again shell
Release: 3%{?dist}
Release: 1%{?dist}
Group: System Environment/Shells
License: GPLv2+
Url: http://www.gnu.org/software/bash
@ -47,6 +47,11 @@ Patch025: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-025
Patch026: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-026
Patch027: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-027
Patch028: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-028
Patch029: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-029
Patch030: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-030
Patch031: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-031
Patch032: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-032
Patch033: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-033
# Other patches
Patch101: bash-2.02-security.patch
@ -59,7 +64,6 @@ Patch107: bash-2.05b-pgrp_sync.patch
Patch108: bash-2.05b-readline-oom.patch
Patch109: bash-2.05b-xcc.patch
Patch110: bash-3.2-audit.patch
#Patch111: bash-3.2-rng.patch
Patch112: bash-3.2-ssh_source_bash.patch
Patch113: bash-bashbug.patch
Patch114: bash-cond-rmatch.patch
@ -67,12 +71,7 @@ Patch115: bash-infotags.patch
Patch116: bash-requires.patch
Patch117: bash-setlocale.patch
Patch118: bash-tty-tests.patch
#Patch119: bash-ulimit-m.patch
#Patch120: bash-4.0-no_debug_output.patch
#Patch121: bash-4.0-shell_pipelines_handling.patch
# 518644, alloc memory for key in associative array creation
Patch122: bash-4.0-key_alloc.patch
# 484809, check if interp section is NOBITS
Patch123: bash-4.0-nobits.patch
@ -133,6 +132,11 @@ This package contains documentation files for %{name}.
%patch026 -p0 -b .026
%patch027 -p0 -b .027
%patch028 -p0 -b .028
%patch029 -p0 -b .029
%patch030 -p0 -b .030
%patch031 -p0 -b .031
%patch032 -p0 -b .032
%patch033 -p0 -b .033
# Other patches
%patch101 -p1 -b .security
@ -145,7 +149,6 @@ This package contains documentation files for %{name}.
%patch108 -p1 -b .readline_oom
%patch109 -p1 -b .xcc
%patch110 -p1 -b .audit
#%patch111 -p1 -b .rng
%patch112 -p1 -b .ssh_source_bash
%patch113 -p1 -b .bashbug
%patch114 -p1 -b .cond_rmatch
@ -153,10 +156,6 @@ This package contains documentation files for %{name}.
%patch116 -p1 -b .requires
%patch117 -p1 -b .setlocale
%patch118 -p1 -b .tty_tests
#%patch119 -p1 -b .ulimit-m
#%patch120 -p1 -b .no_debug_output
#%patch121 -p1 -b .pipelines_handling
%patch122 -p1 -b .key_alloc
%patch123 -p1 -b .nobits
echo %{version} > _distribution
@ -324,6 +323,10 @@ fi
#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
%changelog
* Wed Sep 16 2009 Roman Rakus <rrakus@redhat.com> - 4.0.33-1
- Patch level 33
- spec file cleanup
* Fri Sep 04 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-3
- check if interp section is NOBITS
- define Recycles pids

106
bash40-029 Normal file
View File

@ -0,0 +1,106 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-029
Bug-Reported-by: Christian Krause <chkr@plauener.de>
Bug-Reference-ID: Thu, 25 Jun 2009 21:47:59 +0200
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00078.html
Bug-Description:
Previous versions of bash accepted strings in the initial environment
that were not valid shell variable assignments, usually because the
names were invalid, but still created shell variables from them and
passed them to child processes in the environment.
Bash-4.0 ignores those names and does not pass them to child processes.
Some users and automated processes depend on invalid variables being
ignored and passed to child processes.
This patch makes bash continue to ignore the invalid names, but pass
them to child processes in the export environment.
Patch:
*** ../bash-4.0-patched/variables.c 2009-01-04 14:32:46.000000000 -0500
--- variables.c 2009-06-29 09:17:20.000000000 -0400
***************
*** 253,256 ****
--- 255,259 ----
static int visible_var __P((SHELL_VAR *));
static int visible_and_exported __P((SHELL_VAR *));
+ static int export_environment_candidate __P((SHELL_VAR *));
static int local_and_exported __P((SHELL_VAR *));
static int variable_in_context __P((SHELL_VAR *));
***************
*** 376,383 ****
# endif
#endif
else if (legal_identifier (name))
{
temp_var = bind_variable (name, string, 0);
! VSETATTR (temp_var, (att_exported | att_imported));
array_needs_making = 1;
}
--- 379,393 ----
# endif
#endif
+ #if 0
else if (legal_identifier (name))
+ #else
+ else
+ #endif
{
temp_var = bind_variable (name, string, 0);
! if (legal_identifier (name))
! VSETATTR (temp_var, (att_exported | att_imported));
! else
! VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
array_needs_making = 1;
}
***************
*** 3083,3086 ****
--- 3098,3111 ----
}
+ /* Candidate variables for the export environment are either valid variables
+ with the export attribute or invalid variables inherited from the initial
+ environment and simply passed through. */
+ static int
+ export_environment_candidate (var)
+ SHELL_VAR *var;
+ {
+ return (exported_p (var) && (invisible_p (var) == 0 || imported_p (var)));
+ }
+
/* Return non-zero if VAR is a local variable in the current context and
is exported. */
***************
*** 3439,3443 ****
--- 3464,3472 ----
SHELL_VAR **vars;
+ #if 0
vars = map_over (visible_and_exported, vcxt);
+ #else
+ vars = map_over (export_environment_candidate, vcxt);
+ #endif
if (vars == 0)
*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 28
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */

64
bash40-030 Normal file
View File

@ -0,0 +1,64 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-030
Bug-Reported-by: Henning Bekel <h.bekel@googlemail.com>
Bug-Reference-ID: <7c6eacF262ctuU1@mid.individual.net>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-07/msg00054.html
Bug-Description:
A shell function invoked with `bind -x' is supposed to be able to move the
cursor by setting READLINE_POINT. The effects of this assignment were
sometimes ignored.
Patch:
*** ../bash-4.0-patched/bashline.c 2009-01-08 09:29:24.000000000 -0500
--- bashline.c 2009-07-16 14:13:41.000000000 -0400
***************
*** 3389,3393 ****
register int i;
intmax_t mi;
- int save_point;
sh_parser_state_t ps;
char *cmd, *value, *l;
--- 3389,3392 ----
***************
*** 3433,3437 ****
VSETATTR (v, att_exported);
l = value_cell (v);
- save_point = rl_point;
value = inttostr (rl_point, ibuf, sizeof (ibuf));
v = bind_int_variable ("READLINE_POINT", value);
--- 3432,3435 ----
***************
*** 3451,3455 ****
{
i = mi;
! if (i != save_point)
{
rl_point = i;
--- 3449,3453 ----
{
i = mi;
! if (i != rl_point)
{
rl_point = i;
*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */

62
bash40-031 Normal file
View File

@ -0,0 +1,62 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-031
Bug-Reported-by: Roman Rakus <rrakus@redhat.com>
Bug-Reference-ID: <4A93F6E9.4050401@redhat.com>
Bug-Reference-URL:
Bug-Description:
An implicit assignment to index "0" of an existing array variable caused
the shell to crash when the variable was unset.
Patch:
*** ../bash-4.0-patched/arrayfunc.c 2009-03-08 21:24:39.000000000 -0400
--- arrayfunc.c 2009-08-24 09:29:43.000000000 -0400
***************
*** 99,103 ****
hash = assoc_create (0);
if (oldval)
! assoc_insert (hash, "0", oldval);
FREE (value_cell (var));
--- 99,103 ----
hash = assoc_create (0);
if (oldval)
! assoc_insert (hash, savestring ("0"), oldval);
FREE (value_cell (var));
*** ../bash-4.0-patched/variables.c 2009-01-04 14:32:46.000000000 -0500
--- variables.c 2009-08-24 09:29:58.000000000 -0400
***************
*** 2218,2222 ****
else if (assoc_p (entry))
{
! assoc_insert (assoc_cell (entry), "0", newval);
free (newval);
}
--- 2218,2222 ----
else if (assoc_p (entry))
{
! assoc_insert (assoc_cell (entry), savestring ("0"), newval);
free (newval);
}
*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */

46
bash40-032 Normal file
View File

@ -0,0 +1,46 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-032
Bug-Reported-by: muszi@muszi.kite.hu
Bug-Reference-ID: <20090826113159.18815.qmail@muszi.kite.hu>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-08/msg00090.html
Bug-Description:
Bash-4.0 has a memory leak when processing ${!prefix@}.
Patch:
*** ../bash-4.0-patched/subst.c 2009-07-22 23:18:55.000000000 -0400
--- subst.c 2009-08-26 23:08:51.000000000 -0400
***************
*** 6607,6611 ****
}
free (x);
! free (xlist);
free (temp1);
*indexp = sindex;
--- 6769,6773 ----
}
free (x);
! dispose_words (xlist);
free (temp1);
*indexp = sindex;
*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */

50
bash40-033 Normal file
View File

@ -0,0 +1,50 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-033
Bug-Reported-by: Dr. Werner Fink <werner@suse.de>
Bug-Reference-ID: <200907010951.n619p76I013912@boole.suse.de>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-07/msg00000.html
Bug-Description:
Bash-4.0 has a memory leak in the `read' builtin when the number of fields
read is not the same as the number of variables passed as arguments.
Patch:
*** ../bash-4.0-patched/builtins/read.def 2009-03-08 21:24:45.000000000 -0400
--- builtins/read.def 2009-07-01 15:32:42.000000000 -0400
***************
*** 764,768 ****
tofree = input_string = t;
else
! input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
}
#endif
--- 764,771 ----
tofree = input_string = t;
else
! {
! input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
! tofree = t;
! }
}
#endif
*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 33
#endif /* _PATCHLEVEL_H_ */