Browse Source

add a bunch of collected patches

Ralf S. Engelschall 22 years ago
parent
commit
3402525e0d
2 changed files with 142 additions and 7 deletions
  1. 133 0
      bash/bash.patch
  2. 9 7
      bash/bash.spec

+ 133 - 0
bash/bash.patch

@@ -0,0 +1,133 @@
+This patch makes sure Bash does not segfault on empty here documents. It
+is derived from Gentoo Linux. The problem can be reproduced with "xargs
+<<< ${EMTPY_VARIABLE}".
+
+--- redir.c	2002-03-12 20:27:38.000000000 +0000
++++ redir.c	2003-05-01 13:04:07.000000000 +0100
+@@ -263,8 +263,10 @@
+   int herelen, n, e;
+ 
+   herestr = expand_string_to_string (redirectee->word, 0);
+-  herelen = strlen (herestr);
+ 
++  /* verify string wasnt empty */
++  herelen = (herestr == NULL) ? 0 : strlen (herestr);
++  
+   n = write (fd, herestr, herelen);
+   if (n == herelen)
+     {
+
+-----------------------------------------------------------------------------
+
+This patch documents two implemented and classical command line options
+"-v" and "-v". It is derived from Debian GNU/Linux.
+
+--- doc/bash.1  Wed Jan 20 22:48:04 1999
++++ doc/bash.1   Sun Nov 14 13:26:59 1999
+@@ -104,6 +104,12 @@
+ This option allows the positional parameters to be set
+ when invoking an interactive shell.
+ .TP
++.B \-v
++Print shell input lines as they are read.
++.TP
++.B \-x
++Print commands and their arguments as they are executed.
++.TP
+ .B \-D
+ A list of all double-quoted strings preceded by \fB$\fP
+ is printed on the standard ouput.
+
+-----------------------------------------------------------------------------
+
+This patch makes sure Bash does not segfault on on "shift" under "shopt
+-s shift_verbose". It is a null pointer dereference caused by an
+erroneous assumption that, when the number of arguments to shift exceeds
+the number of arguments available for shifting, the latter is always
+explicitly specified on the command line rather than left implicit at
+the default 1. The patch was derived from Debian GNU/Linux.
+
+--- builtins/shift.def.orig    2002-10-22 01:05:10.000000000 -0400
++++ builtins/shift.def 2002-10-22 01:05:06.000000000 -0400
+@@ -68,7 +68,7 @@
+   else if (times > number_of_args ())
+     {
+       if (print_shift_error)
+-	sh_erange (list->word->word, "shift count");
++	sh_erange (list ? list->word->word : NULL, "shift count");
+       return (EXECUTION_FAILURE);
+     }
+ 
+
+-----------------------------------------------------------------------------
+
+This patch makes sure a signal state variable is declared "volatile" so
+it is consistent throughout signal handling. This patch is derived from
+SuSE Linux.
+
+--- quit.h
++++ quit.h	Wed May  2 17:38:34 2001
+@@ -21,8 +21,8 @@
+ #if !defined (_QUIT_H_)
+ #define _QUIT_H_
+ 
+ /* Non-zero means SIGINT has already ocurred. */
+-extern int interrupt_state;
++extern volatile int interrupt_state;
+ 
+ /* Macro to call a great deal.  SIGINT just sets above variable.  When
+    it is safe, put QUIT in the code, and the "interrupt" will take place. */
+--- sig.c
++++ sig.c	Wed May  2 17:36:17 2001
+@@ -57,7 +57,7 @@
+ extern int interactive, interactive_shell, login_shell, startup_state;
+ 
+ /* Non-zero after SIGINT. */
+-int interrupt_state;
++volatile int interrupt_state = 0;
+ 
+ /* The environment at the top-level R-E loop.  We use this in
+    the case of error return. */
+@@ -69,7 +69,7 @@
+ #endif /* JOB_CONTROL */
+ 
+ /* When non-zero, we throw_to_top_level (). */
+-int interrupt_immediately = 0;
++volatile int interrupt_immediately = 0;
+ 
+ static void initialize_shell_signals ();
+ 
+-----------------------------------------------------------------------------
+
+This patch adds an explicit recognition for terminal sequence "kD" to be
+"Delete" key. This is derived from Debian GNU/Linux and SuSE Linux.
+
+--- lib/readline/terminal.c
++++ lib/readline/terminal.c	Thu Jul 18 14:34:00 2002
+@@ -145,6 +145,9 @@
+ static char *_rl_term_kH;
+ static char *_rl_term_at7;	/* @7 */
+ 
++/* The key sequence sent by the Delete key, if any. */
++static char *_rl_term_kD;
++
+ /* Insert key */
+ static char *_rl_term_kI;
+ 
+@@ -313,6 +316,7 @@
+   { "ei", &_rl_term_ei },
+   { "ic", &_rl_term_ic },
+   { "im", &_rl_term_im },
++  { "kD", &_rl_term_kD },	/* delete */
+   { "kH", &_rl_term_kH },	/* home down ?? */
+   { "kI", &_rl_term_kI },	/* insert */
+   { "kd", &_rl_term_kd },
+@@ -496,6 +500,7 @@
+ 
+   _rl_bind_if_unbound (_rl_term_kh, rl_beg_of_line);	/* Home */
+   _rl_bind_if_unbound (_rl_term_at7, rl_end_of_line);	/* End */
++  _rl_bind_if_unbound (_rl_term_kD, rl_delete);		/* Delete */
+ 
+   _rl_keymap = xkeymap;
+ }
+

+ 9 - 7
bash/bash.spec

@@ -42,13 +42,14 @@ Release:      20030725
 #   list of sources
 Source0:      ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}.tar.gz
 Source1:      profile
-Patch0:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-001
-Patch1:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-002
-Patch2:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-003
-Patch3:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-004
-Patch4:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-005
-Patch5:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-006
-Patch6:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-007
+Patch0:       bash.patch
+Patch1:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-001
+Patch2:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-002
+Patch3:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-003
+Patch4:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-004
+Patch5:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-005
+Patch6:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-006
+Patch7:       ftp://ftp.cwru.edu/pub/bash/bash-%{V_real}-patches/bash%{V_comp}-007
 
 #   build information
 Prefix:       %{l_prefix}
@@ -74,6 +75,7 @@ AutoReqProv:  no
     %patch4 -p0
     %patch5 -p0
     %patch6 -p0
+    %patch7 -p0
 
 %build
     #   configure package