Bump buildroot to version 2017-02
TG-3 #closed
This commit is contained in:
@@ -1,116 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-031
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-031
|
||||
|
||||
Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
|
||||
Bug-Reference-ID: <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
The new nameref assignment functionality introduced in bash-4.3 did not perform
|
||||
enough validation on the variable value and would create variables with
|
||||
invalid names.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500
|
||||
--- b/subst.h 2014-09-01 12:16:56.000000000 -0400
|
||||
***************
|
||||
*** 48,51 ****
|
||||
--- 48,52 ----
|
||||
#define ASS_MKGLOBAL 0x0008 /* force global assignment */
|
||||
#define ASS_NAMEREF 0x0010 /* assigning to nameref variable */
|
||||
+ #define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */
|
||||
|
||||
/* Flags for the string extraction functions. */
|
||||
*** a/bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400
|
||||
--- b/variables.c 2014-09-01 14:37:44.000000000 -0400
|
||||
***************
|
||||
*** 2504,2511 ****
|
||||
int hflags, aflags;
|
||||
{
|
||||
! char *newval;
|
||||
SHELL_VAR *entry;
|
||||
|
||||
entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
|
||||
/* Follow the nameref chain here if this is the global variables table */
|
||||
if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
|
||||
--- 2566,2590 ----
|
||||
int hflags, aflags;
|
||||
{
|
||||
! char *newname, *newval;
|
||||
SHELL_VAR *entry;
|
||||
+ #if defined (ARRAY_VARS)
|
||||
+ arrayind_t ind;
|
||||
+ char *subp;
|
||||
+ int sublen;
|
||||
+ #endif
|
||||
|
||||
+ newname = 0;
|
||||
+ #if defined (ARRAY_VARS)
|
||||
+ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
|
||||
+ {
|
||||
+ newname = array_variable_name (name, &subp, &sublen);
|
||||
+ if (newname == 0)
|
||||
+ return (SHELL_VAR *)NULL; /* XXX */
|
||||
+ entry = hash_lookup (newname, table);
|
||||
+ }
|
||||
+ else
|
||||
+ #endif
|
||||
entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
|
||||
+
|
||||
/* Follow the nameref chain here if this is the global variables table */
|
||||
if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
|
||||
***************
|
||||
*** 2538,2541 ****
|
||||
--- 2617,2630 ----
|
||||
}
|
||||
}
|
||||
+ #if defined (ARRAY_VARS)
|
||||
+ else if (entry == 0 && newname)
|
||||
+ {
|
||||
+ entry = make_new_array_variable (newname); /* indexed array by default */
|
||||
+ if (entry == 0)
|
||||
+ return entry;
|
||||
+ ind = array_expand_index (name, subp, sublen);
|
||||
+ bind_array_element (entry, ind, value, aflags);
|
||||
+ }
|
||||
+ #endif
|
||||
else if (entry == 0)
|
||||
{
|
||||
***************
|
||||
*** 2658,2662 ****
|
||||
if (nameref_cell (nv) == 0)
|
||||
return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
|
||||
! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
|
||||
}
|
||||
else
|
||||
--- 2747,2752 ----
|
||||
if (nameref_cell (nv) == 0)
|
||||
return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
|
||||
! /* XXX - bug here with ref=array[index] */
|
||||
! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
|
||||
}
|
||||
else
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 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_ */
|
||||
@@ -1,55 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-032
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-032
|
||||
|
||||
Bug-Reported-by: crispusfairbairn@gmail.com
|
||||
Bug-Reference-ID: <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When bash is running in Posix mode, it allows signals -- including SIGCHLD --
|
||||
to interrupt the `wait' builtin, as Posix requires. However, the interrupt
|
||||
causes bash to not run a SIGCHLD trap for all exited children. This patch
|
||||
fixes the issue and restores the documented behavior in Posix mode.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/jobs.c 2014-05-14 09:20:15.000000000 -0400
|
||||
--- b/jobs.c 2014-09-09 11:50:38.000000000 -0400
|
||||
***************
|
||||
*** 3340,3344 ****
|
||||
{
|
||||
interrupt_immediately = 0;
|
||||
! trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */
|
||||
wait_signal_received = SIGCHLD;
|
||||
/* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
|
||||
--- 3346,3352 ----
|
||||
{
|
||||
interrupt_immediately = 0;
|
||||
! /* This was trap_handler (SIGCHLD) but that can lose traps if
|
||||
! children_exited > 1 */
|
||||
! queue_sigchld_trap (children_exited);
|
||||
wait_signal_received = SIGCHLD;
|
||||
/* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 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_ */
|
||||
@@ -1,229 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-033
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-033
|
||||
|
||||
Bug-Reported-by: mickael9@gmail.com, Jan Rome <jan.rome@gmail.com>
|
||||
Bug-Reference-ID: <20140907224046.382ED3610CC@mickael-laptop.localdomain>,
|
||||
<540D661D.50908@gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html
|
||||
http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash does not clean up the terminal state in all cases where bash or
|
||||
readline modifies it and bash is subsequently terminated by a fatal signal.
|
||||
This happens when the `read' builtin modifies the terminal settings, both
|
||||
when readline is active and when it is not. It occurs most often when a script
|
||||
installs a trap that exits on a signal without re-sending the signal to itself.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/shell.c 2014-01-14 08:04:32.000000000 -0500
|
||||
--- b/shell.c 2014-12-22 10:27:50.000000000 -0500
|
||||
***************
|
||||
*** 74,77 ****
|
||||
--- 74,78 ----
|
||||
|
||||
#if defined (READLINE)
|
||||
+ # include <readline/readline.h>
|
||||
# include "bashline.h"
|
||||
#endif
|
||||
***************
|
||||
*** 910,913 ****
|
||||
--- 912,923 ----
|
||||
fflush (stderr);
|
||||
|
||||
+ /* Clean up the terminal if we are in a state where it's been modified. */
|
||||
+ #if defined (READLINE)
|
||||
+ if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
|
||||
+ (*rl_deprep_term_function) ();
|
||||
+ #endif
|
||||
+ if (read_tty_modified ())
|
||||
+ read_tty_cleanup ();
|
||||
+
|
||||
/* Do trap[0] if defined. Allow it to override the exit status
|
||||
passed to us. */
|
||||
*** a/bash-4.3-patched/builtins/read.def 2014-10-01 12:57:38.000000000 -0400
|
||||
--- b/builtins/read.def 2014-12-22 10:48:54.000000000 -0500
|
||||
***************
|
||||
*** 141,148 ****
|
||||
int sigalrm_seen;
|
||||
|
||||
! static int reading;
|
||||
static SigHandler *old_alrm;
|
||||
static unsigned char delim;
|
||||
|
||||
/* In all cases, SIGALRM just sets a flag that we check periodically. This
|
||||
avoids problems with the semi-tricky stuff we do with the xfree of
|
||||
--- 141,150 ----
|
||||
int sigalrm_seen;
|
||||
|
||||
! static int reading, tty_modified;
|
||||
static SigHandler *old_alrm;
|
||||
static unsigned char delim;
|
||||
|
||||
+ static struct ttsave termsave;
|
||||
+
|
||||
/* In all cases, SIGALRM just sets a flag that we check periodically. This
|
||||
avoids problems with the semi-tricky stuff we do with the xfree of
|
||||
***************
|
||||
*** 189,193 ****
|
||||
SHELL_VAR *var;
|
||||
TTYSTRUCT ttattrs, ttset;
|
||||
- struct ttsave termsave;
|
||||
#if defined (ARRAY_VARS)
|
||||
WORD_LIST *alist;
|
||||
--- 191,194 ----
|
||||
***************
|
||||
*** 222,226 ****
|
||||
USE_VAR(lastsig);
|
||||
|
||||
! sigalrm_seen = reading = 0;
|
||||
|
||||
i = 0; /* Index into the string that we are reading. */
|
||||
--- 223,227 ----
|
||||
USE_VAR(lastsig);
|
||||
|
||||
! sigalrm_seen = reading = tty_modified = 0;
|
||||
|
||||
i = 0; /* Index into the string that we are reading. */
|
||||
***************
|
||||
*** 439,442 ****
|
||||
--- 440,445 ----
|
||||
goto assign_vars;
|
||||
}
|
||||
+ if (interactive_shell == 0)
|
||||
+ initialize_terminating_signals ();
|
||||
old_alrm = set_signal_handler (SIGALRM, sigalrm);
|
||||
add_unwind_protect (reset_alarm, (char *)NULL);
|
||||
***************
|
||||
*** 483,487 ****
|
||||
--- 486,493 ----
|
||||
if (i < 0)
|
||||
sh_ttyerror (1);
|
||||
+ tty_modified = 1;
|
||||
add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
|
||||
+ if (interactive_shell == 0)
|
||||
+ initialize_terminating_signals ();
|
||||
}
|
||||
}
|
||||
***************
|
||||
*** 498,502 ****
|
||||
--- 504,511 ----
|
||||
sh_ttyerror (1);
|
||||
|
||||
+ tty_modified = 1;
|
||||
add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
|
||||
+ if (interactive_shell == 0)
|
||||
+ initialize_terminating_signals ();
|
||||
}
|
||||
|
||||
***************
|
||||
*** 589,592 ****
|
||||
--- 598,603 ----
|
||||
else
|
||||
lastsig = 0;
|
||||
+ if (terminating_signal && tty_modified)
|
||||
+ ttyrestore (&termsave); /* fix terminal before exiting */
|
||||
CHECK_TERMSIG;
|
||||
eof = 1;
|
||||
***************
|
||||
*** 979,982 ****
|
||||
--- 990,1007 ----
|
||||
{
|
||||
ttsetattr (ttp->fd, ttp->attrs);
|
||||
+ tty_modified = 0;
|
||||
+ }
|
||||
+
|
||||
+ void
|
||||
+ read_tty_cleanup ()
|
||||
+ {
|
||||
+ if (tty_modified)
|
||||
+ ttyrestore (&termsave);
|
||||
+ }
|
||||
+
|
||||
+ int
|
||||
+ read_tty_modified ()
|
||||
+ {
|
||||
+ return (tty_modified);
|
||||
}
|
||||
|
||||
*** ./bash-4.3-patched/builtins/common.h 2014-10-01 12:57:47.000000000 -0400
|
||||
--- b/builtins/common.h 2014-12-22 10:10:14.000000000 -0500
|
||||
***************
|
||||
*** 123,126 ****
|
||||
--- 141,148 ----
|
||||
extern void getopts_reset __P((int));
|
||||
|
||||
+ /* Functions from read.def */
|
||||
+ extern void read_tty_cleanup __P((void));
|
||||
+ extern int read_tty_modified __P((void));
|
||||
+
|
||||
/* Functions from set.def */
|
||||
extern int minus_o_option_value __P((char *));
|
||||
*** a/bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400
|
||||
--- b/bashline.c 2014-09-08 11:28:56.000000000 -0400
|
||||
***************
|
||||
*** 203,206 ****
|
||||
--- 203,207 ----
|
||||
extern int array_needs_making;
|
||||
extern int posixly_correct, no_symbolic_links;
|
||||
+ extern int sigalrm_seen;
|
||||
extern char *current_prompt_string, *ps1_prompt;
|
||||
extern STRING_INT_ALIST word_token_alist[];
|
||||
***************
|
||||
*** 4209,4214 ****
|
||||
/* If we're going to longjmp to top_level, make sure we clean up readline.
|
||||
check_signals will call QUIT, which will eventually longjmp to top_level,
|
||||
! calling run_interrupt_trap along the way. */
|
||||
! if (interrupt_state)
|
||||
rl_cleanup_after_signal ();
|
||||
bashline_reset_event_hook ();
|
||||
--- 4262,4268 ----
|
||||
/* If we're going to longjmp to top_level, make sure we clean up readline.
|
||||
check_signals will call QUIT, which will eventually longjmp to top_level,
|
||||
! calling run_interrupt_trap along the way. The check for sigalrm_seen is
|
||||
! to clean up the read builtin's state. */
|
||||
! if (terminating_signal || interrupt_state || sigalrm_seen)
|
||||
rl_cleanup_after_signal ();
|
||||
bashline_reset_event_hook ();
|
||||
*** a/bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500
|
||||
--- b/sig.c 2014-09-08 11:26:33.000000000 -0400
|
||||
***************
|
||||
*** 533,538 ****
|
||||
/* Set the event hook so readline will call it after the signal handlers
|
||||
finish executing, so if this interrupted character input we can get
|
||||
! quick response. */
|
||||
! if (interactive_shell && interactive && no_line_editing == 0)
|
||||
bashline_set_event_hook ();
|
||||
#endif
|
||||
--- 533,540 ----
|
||||
/* Set the event hook so readline will call it after the signal handlers
|
||||
finish executing, so if this interrupted character input we can get
|
||||
! quick response. If readline is active or has modified the terminal we
|
||||
! need to set this no matter what the signal is, though the check for
|
||||
! RL_STATE_TERMPREPPED is possibly redundant. */
|
||||
! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
|
||||
bashline_set_event_hook ();
|
||||
#endif
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 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_ */
|
||||
@@ -1,94 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-034
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-034
|
||||
|
||||
Bug-Reported-by: Dreamcat4 <dreamcat4@gmail.com>
|
||||
Bug-Reference-ID: <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
If neither the -f nor -v options is supplied to unset, and a name argument is
|
||||
found to be a function and unset, subsequent name arguments are not treated as
|
||||
variables before attempting to unset a function by that name.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/builtins/set.def 2013-04-19 07:20:34.000000000 -0400
|
||||
--- b/builtins/set.def 2015-05-05 13:25:36.000000000 -0400
|
||||
***************
|
||||
*** 752,758 ****
|
||||
--- 797,805 ----
|
||||
{
|
||||
int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
|
||||
+ int global_unset_func, global_unset_var;
|
||||
char *name;
|
||||
|
||||
unset_function = unset_variable = unset_array = nameref = any_failed = 0;
|
||||
+ global_unset_func = global_unset_var = 0;
|
||||
|
||||
reset_internal_getopt ();
|
||||
***************
|
||||
*** 762,769 ****
|
||||
{
|
||||
case 'f':
|
||||
! unset_function = 1;
|
||||
break;
|
||||
case 'v':
|
||||
! unset_variable = 1;
|
||||
break;
|
||||
case 'n':
|
||||
--- 809,816 ----
|
||||
{
|
||||
case 'f':
|
||||
! global_unset_func = 1;
|
||||
break;
|
||||
case 'v':
|
||||
! global_unset_var = 1;
|
||||
break;
|
||||
case 'n':
|
||||
***************
|
||||
*** 778,782 ****
|
||||
list = loptend;
|
||||
|
||||
! if (unset_function && unset_variable)
|
||||
{
|
||||
builtin_error (_("cannot simultaneously unset a function and a variable"));
|
||||
--- 825,829 ----
|
||||
list = loptend;
|
||||
|
||||
! if (global_unset_func && global_unset_var)
|
||||
{
|
||||
builtin_error (_("cannot simultaneously unset a function and a variable"));
|
||||
***************
|
||||
*** 796,799 ****
|
||||
--- 843,849 ----
|
||||
name = list->word->word;
|
||||
|
||||
+ unset_function = global_unset_func;
|
||||
+ unset_variable = global_unset_var;
|
||||
+
|
||||
#if defined (ARRAY_VARS)
|
||||
unset_array = 0;
|
||||
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 33
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 34
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,67 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-035
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-035
|
||||
|
||||
Bug-Reported-by: <romerox.adrian@gmail.com>
|
||||
Bug-Reference-ID: <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
A locale with a long name can trigger a buffer overflow and core dump. This
|
||||
applies on systems that do not have locale_charset in libc, are not using
|
||||
GNU libiconv, and are not using the libintl that ships with bash in lib/intl.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/lib/sh/unicode.c 2014-01-30 16:47:19.000000000 -0500
|
||||
--- b/lib/sh/unicode.c 2015-05-01 08:58:30.000000000 -0400
|
||||
***************
|
||||
*** 79,83 ****
|
||||
if (s)
|
||||
{
|
||||
! strcpy (charsetbuf, s+1);
|
||||
t = strchr (charsetbuf, '@');
|
||||
if (t)
|
||||
--- 79,84 ----
|
||||
if (s)
|
||||
{
|
||||
! strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1);
|
||||
! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
|
||||
t = strchr (charsetbuf, '@');
|
||||
if (t)
|
||||
***************
|
||||
*** 85,89 ****
|
||||
return charsetbuf;
|
||||
}
|
||||
! strcpy (charsetbuf, locale);
|
||||
return charsetbuf;
|
||||
}
|
||||
--- 86,91 ----
|
||||
return charsetbuf;
|
||||
}
|
||||
! strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1);
|
||||
! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
|
||||
return charsetbuf;
|
||||
}
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 34
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 35
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,61 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-036
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-036
|
||||
|
||||
Bug-Reported-by: emanuelczirai@cryptolab.net
|
||||
Bug-Reference-ID: <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When evaluating and setting integer variables, and the assignment fails to
|
||||
create a variable (for example, when performing an operation on an array
|
||||
variable with an invalid subscript), bash attempts to dereference a null
|
||||
pointer, causing a segmentation violation.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-20150206/variables.c 2015-01-23 20:39:27.000000000 -0500
|
||||
--- b/variables.c 2015-02-19 13:56:12.000000000 -0500
|
||||
***************
|
||||
*** 2834,2841 ****
|
||||
v = bind_variable (lhs, rhs, 0);
|
||||
|
||||
! if (v && isint)
|
||||
! VSETATTR (v, att_integer);
|
||||
!
|
||||
! VUNSETATTR (v, att_invisible);
|
||||
|
||||
return (v);
|
||||
--- 2834,2843 ----
|
||||
v = bind_variable (lhs, rhs, 0);
|
||||
|
||||
! if (v)
|
||||
! {
|
||||
! if (isint)
|
||||
! VSETATTR (v, att_integer);
|
||||
! VUNSETATTR (v, att_invisible);
|
||||
! }
|
||||
|
||||
return (v);
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 35
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 36
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,47 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-037
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-037
|
||||
|
||||
Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org>
|
||||
Bug-Reference-ID: <20150204144240.GN13956@eeg.ccf.org>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
If an associative array uses `@' or `*' as a subscript, `declare -p' produces
|
||||
output that cannot be reused as input.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/assoc.c 2011-11-05 16:39:05.000000000 -0400
|
||||
--- b/assoc.c 2015-02-04 15:28:25.000000000 -0500
|
||||
***************
|
||||
*** 437,440 ****
|
||||
--- 440,445 ----
|
||||
if (sh_contains_shell_metas (tlist->key))
|
||||
istr = sh_double_quote (tlist->key);
|
||||
+ else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0')
|
||||
+ istr = sh_double_quote (tlist->key);
|
||||
else
|
||||
istr = tlist->key;
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 36
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 37
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,92 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-038
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-038
|
||||
|
||||
Bug-Reported-by: worley@alum.mit.edu (Dale R. Worley)
|
||||
Bug-Reference-ID: <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There are a number of instances where `time' is not recognized as a reserved
|
||||
word when the shell grammar says it should be.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400
|
||||
--- b/parse.y 2014-06-11 10:25:53.000000000 -0400
|
||||
***************
|
||||
*** 2819,2827 ****
|
||||
case OR_OR:
|
||||
case '&':
|
||||
case DO:
|
||||
case THEN:
|
||||
case ELSE:
|
||||
case '{': /* } */
|
||||
! case '(': /* ) */
|
||||
case BANG: /* ! time pipeline */
|
||||
case TIME: /* time time pipeline */
|
||||
--- 2819,2832 ----
|
||||
case OR_OR:
|
||||
case '&':
|
||||
+ case WHILE:
|
||||
case DO:
|
||||
+ case UNTIL:
|
||||
+ case IF:
|
||||
case THEN:
|
||||
+ case ELIF:
|
||||
case ELSE:
|
||||
case '{': /* } */
|
||||
! case '(': /* )( */
|
||||
! case ')': /* only valid in case statement */
|
||||
case BANG: /* ! time pipeline */
|
||||
case TIME: /* time time pipeline */
|
||||
*** a/bash-4.3-patched/y.tab.c 2014-10-05 13:52:50.000000000 -0400
|
||||
--- b/y.tab.c 2015-05-19 15:08:43.000000000 -0400
|
||||
***************
|
||||
*** 5131,5139 ****
|
||||
case OR_OR:
|
||||
case '&':
|
||||
case DO:
|
||||
case THEN:
|
||||
case ELSE:
|
||||
case '{': /* } */
|
||||
! case '(': /* ) */
|
||||
case BANG: /* ! time pipeline */
|
||||
case TIME: /* time time pipeline */
|
||||
--- 5131,5144 ----
|
||||
case OR_OR:
|
||||
case '&':
|
||||
+ case WHILE:
|
||||
case DO:
|
||||
+ case UNTIL:
|
||||
+ case IF:
|
||||
case THEN:
|
||||
+ case ELIF:
|
||||
case ELSE:
|
||||
case '{': /* } */
|
||||
! case '(': /* )( */
|
||||
! case ')': /* only valid in case statement */
|
||||
case BANG: /* ! time pipeline */
|
||||
case TIME: /* time time pipeline */
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 37
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 38
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,61 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-039
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-039
|
||||
|
||||
Bug-Reported-by: SN <poczta-sn@gazeta.pl>
|
||||
Bug-Reference-ID: <54E2554C.205@gazeta.pl>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Using the output of `declare -p' when run in a function can result in variables
|
||||
that are invisible to `declare -p'. This problem occurs when an assignment
|
||||
builtin such as `declare' receives a quoted compound array assignment as one of
|
||||
its arguments.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/arrayfunc.c 2014-10-01 13:08:48.000000000 -0400
|
||||
--- b/arrayfunc.c 2015-02-19 14:33:05.000000000 -0500
|
||||
***************
|
||||
*** 405,408 ****
|
||||
--- 405,411 ----
|
||||
else
|
||||
array_insert (a, i, l->word->word);
|
||||
+
|
||||
+ VUNSETATTR (var, att_invisible); /* no longer invisible */
|
||||
+
|
||||
return var;
|
||||
}
|
||||
***************
|
||||
*** 635,638 ****
|
||||
--- 638,645 ----
|
||||
if (nlist)
|
||||
dispose_words (nlist);
|
||||
+
|
||||
+ if (var)
|
||||
+ VUNSETATTR (var, att_invisible); /* no longer invisible */
|
||||
+
|
||||
return (var);
|
||||
}
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 38
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 39
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,51 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-040
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacrias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-040
|
||||
|
||||
Bug-Reported-by: Jean Delvare <jdelvare@suse.de>
|
||||
Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There is a memory leak that occurs when bash expands an array reference on
|
||||
the rhs of an assignment statement.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400
|
||||
--- b/subst.c 2015-06-22 09:16:53.000000000 -0400
|
||||
***************
|
||||
*** 5783,5787 ****
|
||||
if (pflags & PF_ASSIGNRHS)
|
||||
{
|
||||
! temp = array_variable_name (name, &tt, (int *)0);
|
||||
if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
|
||||
temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
|
||||
--- 5783,5787 ----
|
||||
if (pflags & PF_ASSIGNRHS)
|
||||
{
|
||||
! var = array_variable_part (name, &tt, (int *)0);
|
||||
if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
|
||||
temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 39
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 40
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,76 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-041
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-041
|
||||
|
||||
Bug-Reported-by: Hanno Böck <hanno@hboeck.de>
|
||||
Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
|
||||
http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There are several out-of-bounds read errors that occur when completing command
|
||||
lines where assignment statements appear before the command name. The first
|
||||
two appear only when programmable completion is enabled; the last one only
|
||||
happens when listing possible completions.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500
|
||||
--- b/bashline.c 2015-08-12 10:21:58.000000000 -0400
|
||||
***************
|
||||
*** 1469,1476 ****
|
||||
--- 1469,1489 ----
|
||||
os = start;
|
||||
n = 0;
|
||||
+ was_assignment = 0;
|
||||
s = find_cmd_start (os);
|
||||
e = find_cmd_end (end);
|
||||
do
|
||||
{
|
||||
+ /* Don't read past the end of rl_line_buffer */
|
||||
+ if (s > rl_end)
|
||||
+ {
|
||||
+ s1 = s = e1;
|
||||
+ break;
|
||||
+ }
|
||||
+ /* Or past point if point is within an assignment statement */
|
||||
+ else if (was_assignment && s > rl_point)
|
||||
+ {
|
||||
+ s1 = s = e1;
|
||||
+ break;
|
||||
+ }
|
||||
/* Skip over assignment statements preceding a command name. If we
|
||||
don't find a command name at all, we can perform command name
|
||||
*** a/bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400
|
||||
--- b/lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400
|
||||
***************
|
||||
*** 690,693 ****
|
||||
--- 690,695 ----
|
||||
if (temp == 0 || *temp == '\0')
|
||||
return (pathname);
|
||||
+ else if (temp[1] == 0 && temp == pathname)
|
||||
+ return (pathname);
|
||||
/* If the basename is NULL, we might have a pathname like '/usr/src/'.
|
||||
Look for a previous slash and, if one is found, return the portion
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 40
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 41
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,59 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-042
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-042
|
||||
|
||||
Bug-Reported-by: Nathan Neulinger <nneul@neulinger.org>
|
||||
Bug-Reference-ID: <558EFDF2.7060402@neulinger.org>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There is a problem when parsing command substitutions containing `case'
|
||||
commands within pipelines that causes the parser to not correctly identify
|
||||
the end of the command substitution.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400
|
||||
--- b/parse.y 2015-06-29 10:59:27.000000000 -0400
|
||||
***************
|
||||
*** 3709,3712 ****
|
||||
--- 3709,3714 ----
|
||||
tflags |= LEX_INWORD;
|
||||
lex_wlen = 0;
|
||||
+ if (tflags & LEX_RESWDOK)
|
||||
+ lex_rwlen = 0;
|
||||
}
|
||||
}
|
||||
*** a/bash-4.3-patched/y.tab.c 2015-05-18 19:27:05.000000000 -0400
|
||||
--- b/y.tab.c 2015-06-29 10:59:27.000000000 -0400
|
||||
***************
|
||||
*** 6021,6024 ****
|
||||
--- 6021,6026 ----
|
||||
tflags |= LEX_INWORD;
|
||||
lex_wlen = 0;
|
||||
+ if (tflags & LEX_RESWDOK)
|
||||
+ lex_rwlen = 0;
|
||||
}
|
||||
}
|
||||
*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 41
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 42
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,63 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-043
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-043
|
||||
|
||||
Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
|
||||
Bug-Reference-ID: <CAMtVo_MF16KWanCB4C8WxA88Qt26zWsvV6V7+_U2fM0E6tCDxw@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00040.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When the lastpipe option is enabled, the last component can contain nested
|
||||
pipelines and cause a segmentation fault under certain circumestances.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400
|
||||
--- b/execute_cmd.c 2014-08-15 08:55:24.000000000 -0400
|
||||
***************
|
||||
*** 2406,2412 ****
|
||||
{
|
||||
#if defined (JOB_CONTROL)
|
||||
! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
|
||||
! #endif
|
||||
lstdin = wait_for (lastpid);
|
||||
#if defined (JOB_CONTROL)
|
||||
/* If wait_for removes the job from the jobs table, use result of last
|
||||
--- 2433,2447 ----
|
||||
{
|
||||
#if defined (JOB_CONTROL)
|
||||
! if (INVALID_JOB (lastpipe_jid) == 0)
|
||||
! {
|
||||
! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
|
||||
! lstdin = wait_for (lastpid);
|
||||
! }
|
||||
! else
|
||||
! lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */
|
||||
! #else
|
||||
lstdin = wait_for (lastpid);
|
||||
+ #endif
|
||||
+
|
||||
#if defined (JOB_CONTROL)
|
||||
/* If wait_for removes the job from the jobs table, use result of last
|
||||
*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 42
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 43
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,52 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-044
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-044
|
||||
|
||||
Bug-Reported-by: Ondrej Oprala <ooprala@redhat.com>
|
||||
Bug-Reference-ID: <539ED55B.2080103@redhat.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
A typo prevents the `compat42' shopt option from working as intended.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
diff -rC 2 bash-4.3.42/builtins/shopt.def bash-4.3.43/builtins/shopt.def
|
||||
*** a/builtins/shopt.def 2013-02-27 09:43:20.000000000 -0500
|
||||
--- b/builtins/shopt.def 2015-10-16 11:25:28.000000000 -0400
|
||||
***************
|
||||
*** 161,165 ****
|
||||
{ "compat40", &shopt_compat40, set_compatibility_level },
|
||||
{ "compat41", &shopt_compat41, set_compatibility_level },
|
||||
! { "compat42", &shopt_compat41, set_compatibility_level },
|
||||
#if defined (READLINE)
|
||||
{ "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
|
||||
--- 161,165 ----
|
||||
{ "compat40", &shopt_compat40, set_compatibility_level },
|
||||
{ "compat41", &shopt_compat41, set_compatibility_level },
|
||||
! { "compat42", &shopt_compat42, set_compatibility_level },
|
||||
#if defined (READLINE)
|
||||
{ "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
|
||||
|
||||
*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 43
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 44
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,56 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-045
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-045
|
||||
|
||||
Bug-Reported-by: Basin Ilya <basinilya@gmail.com>
|
||||
Bug-Reference-ID: <5624C0AC.8070802@gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00141.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
If a file open attempted as part of a redirection fails because it is interrupted
|
||||
by a signal, the shell needs to process any pending traps to allow the redirection
|
||||
to be canceled.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/redir.c 2014-12-03 10:47:38.000000000 -0500
|
||||
--- b/redir.c 2015-01-16 10:15:47.000000000 -0500
|
||||
***************
|
||||
*** 672,676 ****
|
||||
e = errno;
|
||||
if (fd < 0 && e == EINTR)
|
||||
! QUIT;
|
||||
errno = e;
|
||||
}
|
||||
--- 672,679 ----
|
||||
e = errno;
|
||||
if (fd < 0 && e == EINTR)
|
||||
! {
|
||||
! QUIT;
|
||||
! run_pending_traps ();
|
||||
! }
|
||||
errno = e;
|
||||
}
|
||||
|
||||
*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 44
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 45
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,59 +0,0 @@
|
||||
From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-046
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.3
|
||||
Patch-ID: bash43-046
|
||||
|
||||
Bug-Reported-by: Sergey Tselikh <stselikh@gmail.com>
|
||||
Bug-Reference-ID: <20150816110235.91f3e12e3f20d20cdaad963e@gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00080.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
An incorrect conversion from an indexed to associative array can result in a
|
||||
core dump.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/subst.c 2015-08-13 11:32:54.000000000 -0400
|
||||
--- b/subst.c 2015-08-18 10:13:59.000000000 -0400
|
||||
***************
|
||||
*** 9562,9566 ****
|
||||
opts[opti] = '\0';
|
||||
if (opti > 0)
|
||||
! make_internal_declare (tlist->word->word, opts);
|
||||
|
||||
t = do_word_assignment (tlist->word, 0);
|
||||
--- 9562,9573 ----
|
||||
opts[opti] = '\0';
|
||||
if (opti > 0)
|
||||
! {
|
||||
! t = make_internal_declare (tlist->word->word, opts);
|
||||
! if (t != EXECUTION_SUCCESS)
|
||||
! {
|
||||
! last_command_exit_value = t;
|
||||
! exp_jump_to_top_level (DISCARD);
|
||||
! }
|
||||
! }
|
||||
|
||||
t = do_word_assignment (tlist->word, 0);
|
||||
|
||||
*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||
--- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 45
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 46
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -1,2 +1,2 @@
|
||||
# Locally calculated after checking pgp signature
|
||||
sha256 317881019bbf2262fb814b7dd8e40632d13c3608d2f237800a8828fbb8a640dd bash-4.3.30.tar.gz
|
||||
sha256 d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb bash-4.4.tar.gz
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
BASH_VERSION = 4.3.30
|
||||
BASH_VERSION = 4.4
|
||||
BASH_SITE = $(BR2_GNU_MIRROR)/bash
|
||||
# Build after since bash is better than busybox shells
|
||||
BASH_DEPENDENCIES = ncurses readline host-bison \
|
||||
|
||||
64
bsp/buildroot/package/bash/bash44-001.patch
Normal file
64
bsp/buildroot/package/bash/bash44-001.patch
Normal file
@@ -0,0 +1,64 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-001
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-001
|
||||
|
||||
Bug-Reported-by: Sean Zha <freeman_cha@hotmail.com>
|
||||
Bug-Reference-ID: <BN3PR01MB13657D9303EB94BF6E54216E8CCA0@BN3PR01MB1365.prod.exchangelabs.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00107.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash-4.4 changed the way the history list is initially allocated to reduce
|
||||
the number of reallocations and copies. Users who set HISTSIZE to a very
|
||||
large number to essentially unlimit the size of the history list will get
|
||||
memory allocation errors
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.4/lib/readline/history.c 2015-12-28 13:50:31.000000000 -0500
|
||||
--- b/lib/readline/history.c 2016-09-30 14:28:40.000000000 -0400
|
||||
***************
|
||||
*** 58,61 ****
|
||||
--- 58,63 ----
|
||||
#define DEFAULT_HISTORY_INITIAL_SIZE 502
|
||||
|
||||
+ #define MAX_HISTORY_INITIAL_SIZE 8192
|
||||
+
|
||||
/* The number of slots to increase the_history by. */
|
||||
#define DEFAULT_HISTORY_GROW_SIZE 50
|
||||
***************
|
||||
*** 308,312 ****
|
||||
{
|
||||
if (history_stifled && history_max_entries > 0)
|
||||
! history_size = history_max_entries + 2;
|
||||
else
|
||||
history_size = DEFAULT_HISTORY_INITIAL_SIZE;
|
||||
--- 310,316 ----
|
||||
{
|
||||
if (history_stifled && history_max_entries > 0)
|
||||
! history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
|
||||
! ? MAX_HISTORY_INITIAL_SIZE
|
||||
! : history_max_entries + 2;
|
||||
else
|
||||
history_size = DEFAULT_HISTORY_INITIAL_SIZE;
|
||||
*** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 0
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 1
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
73
bsp/buildroot/package/bash/bash44-002.patch
Normal file
73
bsp/buildroot/package/bash/bash44-002.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-002
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-002
|
||||
|
||||
Bug-Reported-by: Eric Pruitt <eric.pruitt@gmail.com>
|
||||
Bug-Reference-ID: <20160916055120.GA28272@sinister.codevat.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00015.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash-4.4 warns when discarding NUL bytes in command substitution output
|
||||
instead of silently dropping them. This patch changes the warnings from
|
||||
one per NUL byte encountered to one warning per command substitution.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.4/subst.c 2016-08-30 16:46:38.000000000 -0400
|
||||
--- b/subst.c 2016-09-26 10:20:19.000000000 -0400
|
||||
***************
|
||||
*** 5932,5935 ****
|
||||
--- 5933,5937 ----
|
||||
int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
|
||||
ssize_t bufn;
|
||||
+ int nullbyte;
|
||||
|
||||
istring = (char *)NULL;
|
||||
***************
|
||||
*** 5939,5942 ****
|
||||
--- 5941,5946 ----
|
||||
skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
|
||||
|
||||
+ nullbyte = 0;
|
||||
+
|
||||
/* Read the output of the command through the pipe. This may need to be
|
||||
changed to understand multibyte characters in the future. */
|
||||
***************
|
||||
*** 5957,5961 ****
|
||||
{
|
||||
#if 1
|
||||
! internal_warning ("%s", _("command substitution: ignored null byte in input"));
|
||||
#endif
|
||||
continue;
|
||||
--- 5961,5969 ----
|
||||
{
|
||||
#if 1
|
||||
! if (nullbyte == 0)
|
||||
! {
|
||||
! internal_warning ("%s", _("command substitution: ignored null byte in input"));
|
||||
! nullbyte = 1;
|
||||
! }
|
||||
#endif
|
||||
continue;
|
||||
*** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 1
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 2
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
62
bsp/buildroot/package/bash/bash44-003.patch
Normal file
62
bsp/buildroot/package/bash/bash44-003.patch
Normal file
@@ -0,0 +1,62 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-003
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-003
|
||||
|
||||
Bug-Reported-by: op7ic \x00 <op7ica@gmail.com>
|
||||
Bug-Reference-ID: <CAFHyJTopWC5Jx+U7WcvxSZKu+KrqSf+_3sHPiRWo=VzXSiPq=w@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00005.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Specially-crafted input, in this case an incomplete pathname expansion
|
||||
bracket expression containing an invalid collating symbol, can cause the
|
||||
shell to crash.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.4/lib/glob/sm_loop.c 2016-04-10 11:23:21.000000000 -0400
|
||||
--- b/lib/glob/sm_loop.c 2016-11-02 14:03:34.000000000 -0400
|
||||
***************
|
||||
*** 331,334 ****
|
||||
--- 331,340 ----
|
||||
if (p[pc] == L('.') && p[pc+1] == L(']'))
|
||||
break;
|
||||
+ if (p[pc] == 0)
|
||||
+ {
|
||||
+ if (vp)
|
||||
+ *vp = INVALID;
|
||||
+ return (p + pc);
|
||||
+ }
|
||||
val = COLLSYM (p, pc);
|
||||
if (vp)
|
||||
***************
|
||||
*** 484,487 ****
|
||||
--- 490,496 ----
|
||||
c = FOLD (c);
|
||||
|
||||
+ if (c == L('\0'))
|
||||
+ return ((test == L('[')) ? savep : (CHAR *)0);
|
||||
+
|
||||
if ((flags & FNM_PATHNAME) && c == L('/'))
|
||||
/* [/] can never match when matching a pathname. */
|
||||
*** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 2
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 3
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
88
bsp/buildroot/package/bash/bash44-004.patch
Normal file
88
bsp/buildroot/package/bash/bash44-004.patch
Normal file
@@ -0,0 +1,88 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-004
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-004
|
||||
|
||||
Bug-Reported-by: Christian Weisgerber <naddy@mips.inka.de>
|
||||
Bug-Reference-ID: <20161101160302.GB54856@lorvorc.mips.inka.de>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00004.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There is a race condition that can result in bash referencing freed memory
|
||||
when freeing data associated with the last process substitution.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.4/jobs.c 2016-08-23 16:38:44.000000000 -0400
|
||||
--- b/jobs.c 2016-11-02 18:24:45.000000000 -0400
|
||||
***************
|
||||
*** 454,457 ****
|
||||
--- 454,472 ----
|
||||
}
|
||||
|
||||
+ void
|
||||
+ discard_last_procsub_child ()
|
||||
+ {
|
||||
+ PROCESS *disposer;
|
||||
+ sigset_t set, oset;
|
||||
+
|
||||
+ BLOCK_CHILD (set, oset);
|
||||
+ disposer = last_procsub_child;
|
||||
+ last_procsub_child = (PROCESS *)NULL;
|
||||
+ UNBLOCK_CHILD (oset);
|
||||
+
|
||||
+ if (disposer)
|
||||
+ discard_pipeline (disposer);
|
||||
+ }
|
||||
+
|
||||
struct pipeline_saver *
|
||||
alloc_pipeline_saver ()
|
||||
*** a/bash-4.4/jobs.h 2016-04-27 10:35:51.000000000 -0400
|
||||
--- b/jobs.h 2016-11-02 18:25:08.000000000 -0400
|
||||
***************
|
||||
*** 191,194 ****
|
||||
--- 191,195 ----
|
||||
extern void stop_making_children __P((void));
|
||||
extern void cleanup_the_pipeline __P((void));
|
||||
+ extern void discard_last_procsub_child __P((void));
|
||||
extern void save_pipeline __P((int));
|
||||
extern PROCESS *restore_pipeline __P((int));
|
||||
*** a/bash-4.4/subst.c 2016-08-30 16:46:38.000000000 -0400
|
||||
--- b/subst.c 2016-11-02 18:23:24.000000000 -0400
|
||||
***************
|
||||
*** 5809,5816 ****
|
||||
#if defined (JOB_CONTROL)
|
||||
if (last_procsub_child)
|
||||
! {
|
||||
! discard_pipeline (last_procsub_child);
|
||||
! last_procsub_child = (PROCESS *)NULL;
|
||||
! }
|
||||
last_procsub_child = restore_pipeline (0);
|
||||
#endif
|
||||
--- 5834,5838 ----
|
||||
#if defined (JOB_CONTROL)
|
||||
if (last_procsub_child)
|
||||
! discard_last_procsub_child ();
|
||||
last_procsub_child = restore_pipeline (0);
|
||||
#endif
|
||||
*** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 3
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 4
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
51
bsp/buildroot/package/bash/bash44-005.patch
Normal file
51
bsp/buildroot/package/bash/bash44-005.patch
Normal file
@@ -0,0 +1,51 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-005
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-005
|
||||
|
||||
Bug-Reported-by: Dr. Werner Fink <werner@suse.de>
|
||||
Bug-Reference-ID: <20161107100936.ajnojd7dspirdflf@noether.suse.de>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00054.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Under certain circumstances, a simple command is optimized to eliminate a
|
||||
fork, resulting in an EXIT trap not being executed.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** a/bash-4.4/builtins/evalstring.c 2016-08-11 14:18:51.000000000 -0400
|
||||
--- b/builtins/evalstring.c 2016-11-08 15:05:07.000000000 -0500
|
||||
***************
|
||||
*** 105,114 ****
|
||||
*bash_input.location.string == '\0' &&
|
||||
command->type == cm_simple &&
|
||||
- #if 0
|
||||
signal_is_trapped (EXIT_TRAP) == 0 &&
|
||||
signal_is_trapped (ERROR_TRAP) == 0 &&
|
||||
- #else
|
||||
any_signals_trapped () < 0 &&
|
||||
- #endif
|
||||
command->redirects == 0 && command->value.Simple->redirects == 0 &&
|
||||
((command->flags & CMD_TIME_PIPELINE) == 0) &&
|
||||
--- 105,111 ----
|
||||
*** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 4
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 5
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
63
bsp/buildroot/package/bash/bash44-006.patch
Normal file
63
bsp/buildroot/package/bash/bash44-006.patch
Normal file
@@ -0,0 +1,63 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-006
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-006
|
||||
|
||||
Bug-Reported-by: <fernando@null-life.com>
|
||||
Bug-Reference-ID: <CAEr-gPFPvqheiAeENmMkEwWRd4U=1iqCsYmR3sLdULOqL++_tQ@mail.gmail.com>
|
||||
Bug-Reference-URL:
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Out-of-range negative offsets to popd can cause the shell to crash attempting
|
||||
to free an invalid memory block.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/builtins/pushd.def 2016-01-25 13:31:49.000000000 -0500
|
||||
--- b/builtins/pushd.def 2016-10-28 10:46:49.000000000 -0400
|
||||
***************
|
||||
*** 366,370 ****
|
||||
}
|
||||
|
||||
! if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
|
||||
{
|
||||
pushd_error (directory_list_offset, which_word ? which_word : "");
|
||||
--- b/366,370 ----
|
||||
}
|
||||
|
||||
! if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
|
||||
{
|
||||
pushd_error (directory_list_offset, which_word ? which_word : "");
|
||||
***************
|
||||
*** 388,391 ****
|
||||
--- b/388,396 ----
|
||||
of the list into place. */
|
||||
i = (direction == '+') ? directory_list_offset - which : which;
|
||||
+ if (i < 0 || i > directory_list_offset)
|
||||
+ {
|
||||
+ pushd_error (directory_list_offset, which_word ? which_word : "");
|
||||
+ return (EXECUTION_FAILURE);
|
||||
+ }
|
||||
free (pushd_directory_list[i]);
|
||||
directory_list_offset--;
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 5
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 6
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
155
bsp/buildroot/package/bash/bash44-007.patch
Normal file
155
bsp/buildroot/package/bash/bash44-007.patch
Normal file
@@ -0,0 +1,155 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-007
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-007
|
||||
|
||||
Bug-Reported-by: Jens Heyens <jens.heyens@cispa.saarland>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://savannah.gnu.org/support/?109224
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When performing filename completion, bash dequotes the directory name being
|
||||
completed, which can result in match failures and potential unwanted
|
||||
expansion.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/bashline.c 2016-08-05 21:44:05.000000000 -0400
|
||||
--- b/bashline.c 2017-01-19 13:15:51.000000000 -0500
|
||||
***************
|
||||
*** 143,147 ****
|
||||
static void restore_directory_hook __P((rl_icppfunc_t));
|
||||
|
||||
! static int directory_exists __P((const char *));
|
||||
|
||||
static void cleanup_expansion_error __P((void));
|
||||
--- b/144,148 ----
|
||||
static void restore_directory_hook __P((rl_icppfunc_t));
|
||||
|
||||
! static int directory_exists __P((const char *, int));
|
||||
|
||||
static void cleanup_expansion_error __P((void));
|
||||
***************
|
||||
*** 3103,3111 ****
|
||||
}
|
||||
|
||||
! /* Check whether not the (dequoted) version of DIRNAME, with any trailing slash
|
||||
! removed, exists. */
|
||||
static int
|
||||
! directory_exists (dirname)
|
||||
const char *dirname;
|
||||
{
|
||||
char *new_dirname;
|
||||
--- b/3107,3116 ----
|
||||
}
|
||||
|
||||
! /* Check whether not DIRNAME, with any trailing slash removed, exists. If
|
||||
! SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
|
||||
static int
|
||||
! directory_exists (dirname, should_dequote)
|
||||
const char *dirname;
|
||||
+ int should_dequote;
|
||||
{
|
||||
char *new_dirname;
|
||||
***************
|
||||
*** 3113,3118 ****
|
||||
struct stat sb;
|
||||
|
||||
! /* First, dequote the directory name */
|
||||
! new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character);
|
||||
dirlen = STRLEN (new_dirname);
|
||||
if (new_dirname[dirlen - 1] == '/')
|
||||
--- b/3118,3124 ----
|
||||
struct stat sb;
|
||||
|
||||
! /* We save the string and chop the trailing slash because stat/lstat behave
|
||||
! inconsistently if one is present. */
|
||||
! new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname);
|
||||
dirlen = STRLEN (new_dirname);
|
||||
if (new_dirname[dirlen - 1] == '/')
|
||||
***************
|
||||
*** 3146,3150 ****
|
||||
should_expand_dirname = '`';
|
||||
|
||||
! if (should_expand_dirname && directory_exists (local_dirname))
|
||||
should_expand_dirname = 0;
|
||||
|
||||
--- b/3152,3156 ----
|
||||
should_expand_dirname = '`';
|
||||
|
||||
! if (should_expand_dirname && directory_exists (local_dirname, 0))
|
||||
should_expand_dirname = 0;
|
||||
|
||||
***************
|
||||
*** 3156,3160 ****
|
||||
global_nounset = unbound_vars_is_error;
|
||||
unbound_vars_is_error = 0;
|
||||
! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */
|
||||
unbound_vars_is_error = global_nounset;
|
||||
if (wl)
|
||||
--- b/3162,3166 ----
|
||||
global_nounset = unbound_vars_is_error;
|
||||
unbound_vars_is_error = 0;
|
||||
! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* does the right thing */
|
||||
unbound_vars_is_error = global_nounset;
|
||||
if (wl)
|
||||
***************
|
||||
*** 3245,3249 ****
|
||||
}
|
||||
|
||||
! if (should_expand_dirname && directory_exists (local_dirname))
|
||||
should_expand_dirname = 0;
|
||||
|
||||
--- b/3262,3266 ----
|
||||
}
|
||||
|
||||
! if (should_expand_dirname && directory_exists (local_dirname, 1))
|
||||
should_expand_dirname = 0;
|
||||
|
||||
***************
|
||||
*** 3251,3255 ****
|
||||
{
|
||||
new_dirname = savestring (local_dirname);
|
||||
! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */
|
||||
if (wl)
|
||||
{
|
||||
--- b/3268,3272 ----
|
||||
{
|
||||
new_dirname = savestring (local_dirname);
|
||||
! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* does the right thing */
|
||||
if (wl)
|
||||
{
|
||||
*** bash-4.4/subst.c 2016-08-30 16:46:38.000000000 -0400
|
||||
--- b/subst.c 2017-01-19 07:09:57.000000000 -0500
|
||||
***************
|
||||
*** 9459,9462 ****
|
||||
--- b/9459,9466 ----
|
||||
if (word->flags & W_COMPLETE)
|
||||
tword->flags |= W_COMPLETE; /* for command substitutions */
|
||||
+ if (word->flags & W_NOCOMSUB)
|
||||
+ tword->flags |= W_NOCOMSUB;
|
||||
+ if (word->flags & W_NOPROCSUB)
|
||||
+ tword->flags |= W_NOPROCSUB;
|
||||
|
||||
temp = (char *)NULL;
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 6
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 7
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
88
bsp/buildroot/package/bash/bash44-008.patch
Normal file
88
bsp/buildroot/package/bash/bash44-008.patch
Normal file
@@ -0,0 +1,88 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-008
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-008
|
||||
|
||||
Bug-Reported-by: Koichi MURASE <myoga.murase@gmail.com>
|
||||
Bug-Reference-ID: <CAFLRLk-V+1AeQ2k=pY7ih6V+MfQ_w8EF3YWL2E+wmLfgKBtzXA@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00050.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Under certain circumstances, bash will evaluate arithmetic expressions as
|
||||
part of reading an expression token even when evaluation is suppressed. This
|
||||
happens while evaluating a conditional expression and skipping over the
|
||||
failed branch of the expression.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/expr.c 2015-10-11 14:46:36.000000000 -0400
|
||||
--- b/expr.c 2016-11-08 11:55:46.000000000 -0500
|
||||
***************
|
||||
*** 579,585 ****
|
||||
if (curtok == QUES) /* found conditional expr */
|
||||
{
|
||||
- readtok ();
|
||||
- if (curtok == 0 || curtok == COL)
|
||||
- evalerror (_("expression expected"));
|
||||
if (cval == 0)
|
||||
{
|
||||
--- b/579,582 ----
|
||||
***************
|
||||
*** 588,591 ****
|
||||
--- b/585,592 ----
|
||||
}
|
||||
|
||||
+ readtok ();
|
||||
+ if (curtok == 0 || curtok == COL)
|
||||
+ evalerror (_("expression expected"));
|
||||
+
|
||||
val1 = EXP_HIGHEST ();
|
||||
|
||||
***************
|
||||
*** 594,600 ****
|
||||
if (curtok != COL)
|
||||
evalerror (_("`:' expected for conditional expression"));
|
||||
! readtok ();
|
||||
! if (curtok == 0)
|
||||
! evalerror (_("expression expected"));
|
||||
set_noeval = 0;
|
||||
if (cval)
|
||||
--- b/595,599 ----
|
||||
if (curtok != COL)
|
||||
evalerror (_("`:' expected for conditional expression"));
|
||||
!
|
||||
set_noeval = 0;
|
||||
if (cval)
|
||||
***************
|
||||
*** 604,608 ****
|
||||
--- b/603,611 ----
|
||||
}
|
||||
|
||||
+ readtok ();
|
||||
+ if (curtok == 0)
|
||||
+ evalerror (_("expression expected"));
|
||||
val2 = expcond ();
|
||||
+
|
||||
if (set_noeval)
|
||||
noeval--;
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 7
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 8
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
111
bsp/buildroot/package/bash/bash44-009.patch
Normal file
111
bsp/buildroot/package/bash/bash44-009.patch
Normal file
@@ -0,0 +1,111 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-009
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-009
|
||||
|
||||
Bug-Reported-by: Hong Cho <hong.cho@citrix.com>
|
||||
Bug-Reference-ID: <c30b5fe62b2543af8297e47ca487c29c@SJCPEX02CL02.citrite.net>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-12/msg00043.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There is a race condition in add_history() that can be triggered by a fatal
|
||||
signal arriving between the time the history length is updated and the time
|
||||
the history list update is completed. A later attempt to reference an
|
||||
invalid history entry can cause a crash.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/lib/readline/history.c 2016-11-11 13:42:49.000000000 -0500
|
||||
--- b/lib/readline/history.c 2016-12-05 10:37:51.000000000 -0500
|
||||
***************
|
||||
*** 280,283 ****
|
||||
--- b/280,284 ----
|
||||
{
|
||||
HIST_ENTRY *temp;
|
||||
+ int new_length;
|
||||
|
||||
if (history_stifled && (history_length == history_max_entries))
|
||||
***************
|
||||
*** 296,306 ****
|
||||
/* Copy the rest of the entries, moving down one slot. Copy includes
|
||||
trailing NULL. */
|
||||
- #if 0
|
||||
- for (i = 0; i < history_length; i++)
|
||||
- the_history[i] = the_history[i + 1];
|
||||
- #else
|
||||
memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
|
||||
- #endif
|
||||
|
||||
history_base++;
|
||||
}
|
||||
--- b/297,303 ----
|
||||
/* Copy the rest of the entries, moving down one slot. Copy includes
|
||||
trailing NULL. */
|
||||
memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
|
||||
|
||||
+ new_length = history_length;
|
||||
history_base++;
|
||||
}
|
||||
***************
|
||||
*** 316,320 ****
|
||||
history_size = DEFAULT_HISTORY_INITIAL_SIZE;
|
||||
the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
|
||||
! history_length = 1;
|
||||
}
|
||||
else
|
||||
--- b/313,317 ----
|
||||
history_size = DEFAULT_HISTORY_INITIAL_SIZE;
|
||||
the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
|
||||
! new_length = 1;
|
||||
}
|
||||
else
|
||||
***************
|
||||
*** 326,330 ****
|
||||
xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
|
||||
}
|
||||
! history_length++;
|
||||
}
|
||||
}
|
||||
--- b/323,327 ----
|
||||
xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
|
||||
}
|
||||
! new_length = history_length + 1;
|
||||
}
|
||||
}
|
||||
***************
|
||||
*** 332,337 ****
|
||||
temp = alloc_history_entry ((char *)string, hist_inittime ());
|
||||
|
||||
! the_history[history_length] = (HIST_ENTRY *)NULL;
|
||||
! the_history[history_length - 1] = temp;
|
||||
}
|
||||
|
||||
--- b/329,335 ----
|
||||
temp = alloc_history_entry ((char *)string, hist_inittime ());
|
||||
|
||||
! the_history[new_length] = (HIST_ENTRY *)NULL;
|
||||
! the_history[new_length - 1] = temp;
|
||||
! history_length = new_length;
|
||||
}
|
||||
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 8
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 9
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
53
bsp/buildroot/package/bash/bash44-010.patch
Normal file
53
bsp/buildroot/package/bash/bash44-010.patch
Normal file
@@ -0,0 +1,53 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-010
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-010
|
||||
|
||||
Bug-Reported-by: Clark Wang <dearvoid@gmail.com>
|
||||
Bug-Reference-ID: <CADv8-og092RvvUUHy46=BPKChCXw5g=GOOqgN0V3f4a3TpLebQ@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00104.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Depending on compiler optimizations and behavior, the `read' builtin may not
|
||||
save partial input when a timeout occurs.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/builtins/read.def 2016-05-16 14:24:56.000000000 -0400
|
||||
--- b/builtins/read.def 2016-11-25 12:37:56.000000000 -0500
|
||||
***************
|
||||
*** 182,186 ****
|
||||
{
|
||||
register char *varname;
|
||||
! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
|
||||
int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
|
||||
int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
|
||||
--- b/182,187 ----
|
||||
{
|
||||
register char *varname;
|
||||
! int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
|
||||
! volatile int i;
|
||||
int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
|
||||
int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
|
||||
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 9
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 10
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
54
bsp/buildroot/package/bash/bash44-011.patch
Normal file
54
bsp/buildroot/package/bash/bash44-011.patch
Normal file
@@ -0,0 +1,54 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-011
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-011
|
||||
|
||||
Bug-Reported-by: Russell King <rmk@armlinux.org.uk>
|
||||
Bug-Reference-ID: <E1cNnFx-0007G2-S2@flint.armlinux.org.uk>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-01/msg00000.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Subshells begun to run command and process substitutions may attempt to
|
||||
set the terminal's process group to an incorrect value if they receive
|
||||
a fatal signal. This depends on the behavior of the process that starts
|
||||
the shell.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/sig.c 2016-02-11 15:02:45.000000000 -0500
|
||||
--- b/sig.c 2017-01-04 09:09:47.000000000 -0500
|
||||
***************
|
||||
*** 586,590 ****
|
||||
if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
|
||||
hangup_all_jobs ();
|
||||
! end_job_control ();
|
||||
#endif /* JOB_CONTROL */
|
||||
|
||||
--- b/571,576 ----
|
||||
if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
|
||||
hangup_all_jobs ();
|
||||
! if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
|
||||
! end_job_control ();
|
||||
#endif /* JOB_CONTROL */
|
||||
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 10
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 11
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
165
bsp/buildroot/package/bash/bash44-012.patch
Normal file
165
bsp/buildroot/package/bash/bash44-012.patch
Normal file
@@ -0,0 +1,165 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-012
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-012
|
||||
|
||||
Bug-Reported-by: Clark Wang <dearvoid@gmail.com>
|
||||
Bug-Reference-ID: <CADv8-ojttPUFOZXqbjsvy83LfaJtQKZ5qejGdF6j0VJ3vtrYOA@mail.gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00106.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When -N is used, the input is not supposed to be split using $IFS, but
|
||||
leading and trailing IFS whitespace was still removed.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/subst.c 2017-01-20 14:22:01.000000000 -0500
|
||||
--- b/subst.c 2017-01-25 13:43:22.000000000 -0500
|
||||
***************
|
||||
*** 2826,2834 ****
|
||||
/* Parse a single word from STRING, using SEPARATORS to separate fields.
|
||||
ENDPTR is set to the first character after the word. This is used by
|
||||
! the `read' builtin. This is never called with SEPARATORS != $IFS;
|
||||
! it should be simplified.
|
||||
|
||||
XXX - this function is very similar to list_string; they should be
|
||||
combined - XXX */
|
||||
char *
|
||||
get_word_from_string (stringp, separators, endptr)
|
||||
--- b/2826,2838 ----
|
||||
/* Parse a single word from STRING, using SEPARATORS to separate fields.
|
||||
ENDPTR is set to the first character after the word. This is used by
|
||||
! the `read' builtin.
|
||||
!
|
||||
! This is never called with SEPARATORS != $IFS, and takes advantage of that.
|
||||
|
||||
XXX - this function is very similar to list_string; they should be
|
||||
combined - XXX */
|
||||
+
|
||||
+ #define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0)
|
||||
+
|
||||
char *
|
||||
get_word_from_string (stringp, separators, endptr)
|
||||
***************
|
||||
*** 2838,2841 ****
|
||||
--- b/2842,2846 ----
|
||||
char *current_word;
|
||||
int sindex, sh_style_split, whitesep, xflags;
|
||||
+ unsigned char local_cmap[UCHAR_MAX+1]; /* really only need single-byte chars here */
|
||||
size_t slen;
|
||||
|
||||
***************
|
||||
*** 2847,2854 ****
|
||||
separators[2] == '\n' &&
|
||||
separators[3] == '\0';
|
||||
! for (xflags = 0, s = ifs_value; s && *s; s++)
|
||||
{
|
||||
if (*s == CTLESC) xflags |= SX_NOCTLESC;
|
||||
if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
|
||||
}
|
||||
|
||||
--- b/2852,2861 ----
|
||||
separators[2] == '\n' &&
|
||||
separators[3] == '\0';
|
||||
! memset (local_cmap, '\0', sizeof (local_cmap));
|
||||
! for (xflags = 0, s = separators; s && *s; s++)
|
||||
{
|
||||
if (*s == CTLESC) xflags |= SX_NOCTLESC;
|
||||
if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
|
||||
+ local_cmap[(unsigned char)*s] = 1; /* local charmap of separators */
|
||||
}
|
||||
|
||||
***************
|
||||
*** 2857,2864 ****
|
||||
|
||||
/* Remove sequences of whitespace at the beginning of STRING, as
|
||||
! long as those characters appear in IFS. */
|
||||
! if (sh_style_split || !separators || !*separators)
|
||||
{
|
||||
! for (; *s && spctabnl (*s) && isifs (*s); s++);
|
||||
|
||||
/* If the string is nothing but whitespace, update it and return. */
|
||||
--- b/2864,2872 ----
|
||||
|
||||
/* Remove sequences of whitespace at the beginning of STRING, as
|
||||
! long as those characters appear in SEPARATORS. This happens if
|
||||
! SEPARATORS == $' \t\n' or if IFS is unset. */
|
||||
! if (sh_style_split || separators == 0)
|
||||
{
|
||||
! for (; *s && spctabnl (*s) && islocalsep (*s); s++);
|
||||
|
||||
/* If the string is nothing but whitespace, update it and return. */
|
||||
***************
|
||||
*** 2879,2885 ****
|
||||
This obeys the field splitting rules in Posix.2. */
|
||||
sindex = 0;
|
||||
! /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
|
||||
! unless multibyte chars are possible. */
|
||||
! slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
|
||||
current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
|
||||
|
||||
--- b/2887,2893 ----
|
||||
This obeys the field splitting rules in Posix.2. */
|
||||
sindex = 0;
|
||||
! /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
|
||||
! possible, but need it in string_extract_verbatim for bounds checking */
|
||||
! slen = STRLEN (s);
|
||||
current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
|
||||
|
||||
***************
|
||||
*** 2900,2904 ****
|
||||
/* Now skip sequences of space, tab, or newline characters if they are
|
||||
in the list of separators. */
|
||||
! while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
|
||||
sindex++;
|
||||
|
||||
--- b/2908,2912 ----
|
||||
/* Now skip sequences of space, tab, or newline characters if they are
|
||||
in the list of separators. */
|
||||
! while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
|
||||
sindex++;
|
||||
|
||||
***************
|
||||
*** 2907,2916 ****
|
||||
delimiter, not a separate delimiter that would result in an empty field.
|
||||
Look at POSIX.2, 3.6.5, (3)(b). */
|
||||
! if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
|
||||
{
|
||||
sindex++;
|
||||
/* An IFS character that is not IFS white space, along with any adjacent
|
||||
IFS white space, shall delimit a field. */
|
||||
! while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
|
||||
sindex++;
|
||||
}
|
||||
--- b/2915,2924 ----
|
||||
delimiter, not a separate delimiter that would result in an empty field.
|
||||
Look at POSIX.2, 3.6.5, (3)(b). */
|
||||
! if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
|
||||
{
|
||||
sindex++;
|
||||
/* An IFS character that is not IFS white space, along with any adjacent
|
||||
IFS white space, shall delimit a field. */
|
||||
! while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
|
||||
sindex++;
|
||||
}
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 11
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 12
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
Reference in New Issue
Block a user