Official upstream patch level 16

This commit is contained in:
Roman Rakus 2009-04-08 10:41:09 +00:00
parent b44dc2a3b9
commit e732308985
7 changed files with 566 additions and 1 deletions

View File

@ -3,7 +3,7 @@
Version: 4.0
Name: bash
Summary: The GNU Bourne Again shell
Release: 5%{?dist}
Release: 6%{?dist}
Group: System Environment/Shells
License: GPLv2+
Url: http://www.gnu.org/software/bash
@ -27,6 +27,12 @@ Patch007: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-007
Patch008: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-008
Patch009: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-009
Patch010: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-010
Patch011: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-011
Patch012: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-012
Patch013: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-013
Patch014: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-014
Patch015: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-015
Patch016: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0-patches/bash40-016
# Other patches
Patch101: bash-2.02-security.patch
@ -90,6 +96,12 @@ This package contains documentation files for %{name}.
%patch008 -p0 -b .008
%patch009 -p0 -b .009
%patch010 -p0 -b .010
%patch011 -p0 -b .011
%patch012 -p0 -b .012
%patch013 -p0 -b .013
%patch014 -p0 -b .014
%patch015 -p0 -b .015
%patch016 -p0 -b .016
# Other patches
%patch101 -p1 -b .security
@ -276,6 +288,9 @@ fi
#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
%changelog
* Wed Apr 08 2009 Roman Rakus <rrakus@redhat.com> - 4.0-6
- Official upstream patch level 16
* Mon Mar 30 2009 Roman Rakus <rrakus@redhat.com> - 4.0-5
- Split documentation, use bash-doc package
Resolves: #492447

49
bash40-011 Normal file
View File

@ -0,0 +1,49 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-011
Bug-Reported-by: Matt Zyzik <Matt@ice.filescope.com>n
Bug-Reference-ID: <20090312015018.C00741383ED@ice.filescope.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00092.html
Bug-Description:
When using the new |& operator following a simple command with a redirection,
the redirection of stderr through the pipe was not performed under certain
circumstances.
Patch:
*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400
--- parse.y 2009-03-12 21:36:23.000000000 -0400
***************
*** 1123,1127 ****
REDIRECT *r;
! tc = $1;
rd.dest = 1;
r = make_redirection (2, r_duplicating_output, rd);
--- 1123,1127 ----
REDIRECT *r;
! tc = $1->type == cm_simple ? (COMMAND *)$1->value.Simple : $1;
rd.dest = 1;
r = make_redirection (2, r_duplicating_output, rd);
*** ../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 10
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 11
#endif /* _PATCHLEVEL_H_ */

47
bash40-012 Normal file
View File

@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-012
Bug-Reported-by: "Clark J. Wang" <dearvoid@gmail.com>
Bug-Reference-ID: <a96f63770903132300v7816dfb7hb7f48d46048bf3cb@mail.gmail.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00129.html
Bug-Description:
A case statement using the ;& pattern terminator followed immediately by
"esac" caused a core dump due to a null pointer dereference.
Patch:
*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500
--- execute_cmd.c 2009-03-14 13:23:00.000000000 -0400
***************
*** 2931,2935 ****
}
while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
! if ((clauses->flags & CASEPAT_TESTNEXT) == 0)
EXIT_CASE ();
else
--- 2931,2935 ----
}
while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
! if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0)
EXIT_CASE ();
else
*** ../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 11
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 12
#endif /* _PATCHLEVEL_H_ */

153
bash40-013 Normal file
View File

@ -0,0 +1,153 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-013
Bug-Reported-by: jidanni@jidanni.org
Bug-Reference-ID:
Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519165
Bug-Description:
Though references to $@ when there are no positional parameters will now
cause the shell to exit if the `errexit' option has been enabled, constructs
such as ${@:-foo} should not cause an exit.
Patch:
*** ../bash-4.0-patched/subst.c 2009-03-08 21:24:39.000000000 -0400
--- subst.c 2009-03-14 19:04:10.000000000 -0400
***************
*** 86,89 ****
--- 86,90 ----
/* Flags for the `pflags' argument to param_expand() */
#define PF_NOCOMSUB 0x01 /* Do not perform command substitution */
+ #define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */
/* These defs make it easier to use the editor. */
***************
*** 264,268 ****
static int chk_arithsub __P((const char *, int));
! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int));
static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
--- 265,269 ----
static int chk_arithsub __P((const char *, int));
! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int));
static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
***************
*** 5196,5202 ****
NAME was found inside of a double-quoted expression. */
static WORD_DESC *
! parameter_brace_expand_word (name, var_is_special, quoted)
char *name;
! int var_is_special, quoted;
{
WORD_DESC *ret;
--- 5197,5203 ----
NAME was found inside of a double-quoted expression. */
static WORD_DESC *
! parameter_brace_expand_word (name, var_is_special, quoted, pflags)
char *name;
! int var_is_special, quoted, pflags;
{
WORD_DESC *ret;
***************
*** 5230,5234 ****
ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
! (int *)NULL, (int *)NULL, 0);
free (tt);
}
--- 5231,5235 ----
ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
! (int *)NULL, (int *)NULL, pflags);
free (tt);
}
***************
*** 5291,5295 ****
WORD_DESC *w;
! w = parameter_brace_expand_word (name, var_is_special, quoted);
t = w->word;
/* Have to dequote here if necessary */
--- 5292,5296 ----
WORD_DESC *w;
! w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND);
t = w->word;
/* Have to dequote here if necessary */
***************
*** 5308,5312 ****
return (WORD_DESC *)NULL;
! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted);
free (t);
--- 5309,5313 ----
return (WORD_DESC *)NULL;
! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0);
free (t);
***************
*** 6659,6663 ****
tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
else
! tdesc = parameter_brace_expand_word (name, var_is_special, quoted);
if (tdesc)
--- 6660,6664 ----
tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
else
! tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND);
if (tdesc)
***************
*** 6990,6994 ****
list = list_rest_of_args ();
! if (list == 0 && unbound_vars_is_error)
{
uerror[0] = '$';
--- 6991,6995 ----
list = list_rest_of_args ();
! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
{
uerror[0] = '$';
***************
*** 7052,7056 ****
list = list_rest_of_args ();
! if (list == 0 && unbound_vars_is_error)
{
uerror[0] = '$';
--- 7053,7057 ----
list = list_rest_of_args ();
! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
{
uerror[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 12
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 13
#endif /* _PATCHLEVEL_H_ */

113
bash40-014 Normal file
View File

@ -0,0 +1,113 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-014
Bug-Reported-by: smallnow@gmail.com
Bug-Reference-ID: <49C460FE.40307@gmail.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00166.html
Bug-Description:
When the fc builtin is run in a command substitution from a shell with history
enabled, it does not correctly calculate the command on which to operate.
Patch:
*** ../bash-4.0-patched/builtins/fc.def 2009-01-04 14:32:22.000000000 -0500
--- builtins/fc.def 2009-03-21 14:03:43.000000000 -0400
***************
*** 89,92 ****
--- 89,93 ----
extern int literal_history;
extern int posixly_correct;
+ extern int subshell_environment, interactive_shell;
extern int unlink __P((const char *));
***************
*** 173,177 ****
register char *sep;
int numbering, reverse, listing, execute;
! int histbeg, histend, last_hist, retval, opt;
FILE *stream;
REPL *rlist, *rl;
--- 174,178 ----
register char *sep;
int numbering, reverse, listing, execute;
! int histbeg, histend, last_hist, retval, opt, rh;
FILE *stream;
REPL *rlist, *rl;
***************
*** 276,279 ****
--- 277,282 ----
fprintf (stderr, "%s\n", command);
fc_replhist (command); /* replace `fc -s' with command */
+ /* Posix says that the re-executed commands should be entered into the
+ history. */
return (parse_and_execute (command, "fc", SEVAL_NOHIST));
}
***************
*** 294,298 ****
so we check hist_last_line_added. */
! last_hist = i - remember_on_history - hist_last_line_added;
if (list)
--- 297,306 ----
so we check hist_last_line_added. */
! /* Even though command substitution through parse_and_execute turns off
! remember_on_history, command substitution in a shell when set -o history
! has been enabled (interactive or not) should use it in the last_hist
! calculation as if it were on. */
! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
! last_hist = i - rh - hist_last_line_added;
if (list)
***************
*** 457,461 ****
HIST_ENTRY **hlist;
{
! int sign, n, clen;
register int i, j;
register char *s;
--- 465,469 ----
HIST_ENTRY **hlist;
{
! int sign, n, clen, rh;
register int i, j;
register char *s;
***************
*** 473,477 ****
so we check hist_last_line_added. This needs to agree with the
calculation of last_hist in fc_builtin above. */
! i -= remember_on_history + hist_last_line_added;
/* No specification defaults to most recent command. */
--- 481,490 ----
so we check hist_last_line_added. This needs to agree with the
calculation of last_hist in fc_builtin above. */
! /* Even though command substitution through parse_and_execute turns off
! remember_on_history, command substitution in a shell when set -o history
! has been enabled (interactive or not) should use it in the last_hist
! calculation as if it were on. */
! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
! i -= rh + hist_last_line_added;
/* No specification defaults to most recent command. */
*** ../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 13
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 14
#endif /* _PATCHLEVEL_H_ */

84
bash40-015 Normal file
View File

@ -0,0 +1,84 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-015
Bug-Reported-by: Lubomir Rintel <lkundrak@v3.sk>
Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html
Bug-Description:
Deferring handling of signals which should cause the shell to terminate until
it is "safe" to run the handler functions does not work for some terminating
signals.
Patch:
*** ../bash-4.0-patched/sig.c 2009-01-04 14:32:41.000000000 -0500
--- sig.c 2009-03-22 14:47:56.000000000 -0400
***************
*** 449,452 ****
--- 449,494 ----
int sig;
{
+ /* If we get called twice with the same signal before handling it,
+ terminate right away. */
+ if (
+ #ifdef SIGHUP
+ sig != SIGHUP &&
+ #endif
+ #ifdef SIGINT
+ sig != SIGINT &&
+ #endif
+ #ifdef SIGDANGER
+ sig != SIGDANGER &&
+ #endif
+ #ifdef SIGPIPE
+ sig != SIGPIPE &&
+ #endif
+ #ifdef SIGALRM
+ sig != SIGALRM &&
+ #endif
+ #ifdef SIGTERM
+ sig != SIGTERM &&
+ #endif
+ #ifdef SIGXCPU
+ sig != SIGXCPU &&
+ #endif
+ #ifdef SIGXFSZ
+ sig != SIGXFSZ &&
+ #endif
+ #ifdef SIGVTALRM
+ sig != SIGVTALRM &&
+ #endif
+ #ifdef SIGLOST
+ sig != SIGLOST &&
+ #endif
+ #ifdef SIGUSR1
+ sig != SIGUSR1 &&
+ #endif
+ #ifdef SIGUSR2
+ sig != SIGUSR2 &&
+ #endif
+ sig == terminating_signal)
+ terminate_immediately = 1;
+
terminating_signal = sig;
*** ../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 14
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 15
#endif /* _PATCHLEVEL_H_ */

104
bash40-016 Normal file
View File

@ -0,0 +1,104 @@
BASH PATCH REPORT
=================
Bash-Release: 4.0
Patch-ID: bash40-016
Bug-Reported-by: Brian J. Murrell" <brian@interlinx.bc.ca>
Bug-Reference-ID: <1237564627.7666.12.camel@pc.interlinx.bc.ca>
Bug-Reference-URL:http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00160.html
Bug-Description:
There are several problems with the handling of $LINENO in an ERR trap.
Patch:
*** ../bash-4.0-patched/trap.c 2009-01-16 17:07:53.000000000 -0500
--- trap.c 2009-03-20 21:37:00.000000000 -0400
***************
*** 756,760 ****
flags = SEVAL_NONINT|SEVAL_NOHIST;
! if (sig != DEBUG_TRAP && sig != RETURN_TRAP)
flags |= SEVAL_RESETLINE;
if (function_code == 0)
--- 756,760 ----
flags = SEVAL_NONINT|SEVAL_NOHIST;
! if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
flags |= SEVAL_RESETLINE;
if (function_code == 0)
*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500
--- execute_cmd.c 2009-03-21 14:16:11.000000000 -0400
***************
*** 569,572 ****
--- 569,573 ----
/* Fork a subshell, turn off the subshell bit, turn off job
control and call execute_command () on the command again. */
+ line_number_for_err_trap = line_number;
paren_pid = make_child (savestring (make_command_string (command)),
asynchronous);
***************
*** 611,615 ****
--- 612,619 ----
{
last_command_exit_value = exec_result;
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
run_error_trap ();
+ line_number = save_line_number;
}
***************
*** 767,771 ****
--- 771,777 ----
{
last_command_exit_value = exec_result;
+ line_number = line_number_for_err_trap;
run_error_trap ();
+ line_number = save_line_number;
}
***************
*** 2106,2109 ****
--- 2112,2116 ----
COMMAND *tc, *second;
int ignore_return, exec_result, was_error_trap, invert;
+ volatile int save_line_number;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
***************
*** 2175,2178 ****
--- 2182,2186 ----
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+ line_number_for_err_trap = line_number;
exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
***************
*** 2180,2184 ****
--- 2188,2195 ----
{
last_command_exit_value = exec_result;
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
run_error_trap ();
+ line_number = save_line_number;
}
*** ../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 15
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 16
#endif /* _PATCHLEVEL_H_ */