You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.2 KiB
167 lines
5.2 KiB
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; |
|
} |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
This patch makes sure Bash does not segfault on a particular error. |
|
It is derived from RedHat Linux. |
|
|
|
--- builtins/common.c.warnings 2003-03-25 17:48:02.000000000 +0000 |
|
+++ builtins/common.c 2003-03-25 17:49:03.000000000 +0000 |
|
@@ -244,7 +244,7 @@ |
|
char *s; |
|
{ |
|
if (s) |
|
- builtin_error ("%s: no job control"); |
|
+ builtin_error ("%s: no job control", s); |
|
else |
|
builtin_error ("no job control"); |
|
} |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
This adds the OpenPKG packaging brand. |
|
|
|
Index: version.c |
|
--- version.c.orig 2002-04-03 15:49:19.000000000 +0200 |
|
+++ version.c 2003-10-06 17:23:18.000000000 +0200 |
|
@@ -63,7 +63,7 @@ |
|
show_shell_version (extended) |
|
int extended; |
|
{ |
|
- printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); |
|
+ printf ("GNU bash, version %s (%s) [@l_openpkg_release@]\n", shell_version_string (), MACHTYPE); |
|
if (extended) |
|
printf ("Copyright (C) 2002 Free Software Foundation, Inc.\n"); |
|
} |
|
|
|
|