diff mbox

[next,2/2] bash: bump version to 4.4

Message ID 20161129122404.59676-2-Vincent.Riera@imgtec.com
State Accepted
Commit cde22e1fd340492f6f017c9f9a2d749391961887
Headers show

Commit Message

Vicente Olivert Riera Nov. 29, 2016, 12:24 p.m. UTC
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
Notes to maintainer
 - This new version contains a small security fix. From
   http://tiswww.case.edu/php/chet/bash/NEWS:

   "Shells running as root no longer inherit PS4 from the environment,
   closing a security hole involving PS4 expansion performing command
   substitution."

   However, taking into account that bash is a critical package and the
   2016.11 release is very close I've marked this patch as "next".
---
 package/bash/0031-patchlevel-31.patch | 116 -----------------
 package/bash/0032-patchlevel-32.patch |  55 --------
 package/bash/0033-patchlevel-33.patch | 229 ----------------------------------
 package/bash/0034-patchlevel-34.patch |  94 --------------
 package/bash/0035-patchlevel-35.patch |  67 ----------
 package/bash/0036-patchlevel-36.patch |  61 ---------
 package/bash/0037-patchlevel-37.patch |  47 -------
 package/bash/0038-patchlevel-38.patch |  92 --------------
 package/bash/0039-patchlevel-39.patch |  61 ---------
 package/bash/0040-patchlevel-40.patch |  51 --------
 package/bash/0041-patchlevel-41.patch |  76 -----------
 package/bash/0042-patchlevel-42.patch |  59 ---------
 package/bash/0043-patchlevel-43.patch |  63 ----------
 package/bash/0044-patchlevel-44.patch |  52 --------
 package/bash/0045-patchlevel-45.patch |  56 ---------
 package/bash/0046-patchlevel-46.patch |  59 ---------
 package/bash/bash.hash                |   2 +-
 package/bash/bash.mk                  |   2 +-
 18 files changed, 2 insertions(+), 1240 deletions(-)
 delete mode 100644 package/bash/0031-patchlevel-31.patch
 delete mode 100644 package/bash/0032-patchlevel-32.patch
 delete mode 100644 package/bash/0033-patchlevel-33.patch
 delete mode 100644 package/bash/0034-patchlevel-34.patch
 delete mode 100644 package/bash/0035-patchlevel-35.patch
 delete mode 100644 package/bash/0036-patchlevel-36.patch
 delete mode 100644 package/bash/0037-patchlevel-37.patch
 delete mode 100644 package/bash/0038-patchlevel-38.patch
 delete mode 100644 package/bash/0039-patchlevel-39.patch
 delete mode 100644 package/bash/0040-patchlevel-40.patch
 delete mode 100644 package/bash/0041-patchlevel-41.patch
 delete mode 100644 package/bash/0042-patchlevel-42.patch
 delete mode 100644 package/bash/0043-patchlevel-43.patch
 delete mode 100644 package/bash/0044-patchlevel-44.patch
 delete mode 100644 package/bash/0045-patchlevel-45.patch
 delete mode 100644 package/bash/0046-patchlevel-46.patch

Comments

Thomas Petazzoni Nov. 29, 2016, 12:40 p.m. UTC | #1
Hello,

On Tue, 29 Nov 2016 12:24:04 +0000, Vicente Olivert Riera wrote:
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
> Notes to maintainer
>  - This new version contains a small security fix. From
>    http://tiswww.case.edu/php/chet/bash/NEWS:
> 
>    "Shells running as root no longer inherit PS4 from the environment,
>    closing a security hole involving PS4 expansion performing command
>    substitution."
> 
>    However, taking into account that bash is a critical package and the
>    2016.11 release is very close I've marked this patch as "next".

"is a critical package" or "is *NOT* a critical package" ? If it's a
critical package like you suggest, then perhaps we want it in master
anyway ?

Thanks,

Thomas
Vicente Olivert Riera Nov. 29, 2016, 12:59 p.m. UTC | #2
Hi Thomas,

On 29/11/16 12:40, Thomas Petazzoni wrote:
> Hello,
> 
> On Tue, 29 Nov 2016 12:24:04 +0000, Vicente Olivert Riera wrote:
>> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
>> ---
>> Notes to maintainer
>>  - This new version contains a small security fix. From
>>    http://tiswww.case.edu/php/chet/bash/NEWS:
>>
>>    "Shells running as root no longer inherit PS4 from the environment,
>>    closing a security hole involving PS4 expansion performing command
>>    substitution."
>>
>>    However, taking into account that bash is a critical package and the
>>    2016.11 release is very close I've marked this patch as "next".
> 
> "is a critical package" or "is *NOT* a critical package" ? If it's a
> critical package like you suggest, then perhaps we want it in master
> anyway ?

It *IS*, that's why I thought you may not want to have such a big
changes in master so close to the next release if you consider that
security fix is not very important.

Of course, if you think it's important then apply it to master.

I'm gonna test more reverse dependencies of readline by the way. I'll
let you know how it goes.

Vincent

> 
> Thanks,
> 
> Thomas
>
Peter Korsgaard Nov. 30, 2016, 11:02 a.m. UTC | #3
>>>>> "Vicente" == Vicente Olivert Riera <Vincent.Riera@imgtec.com> writes:

 > Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
 > ---
 > Notes to maintainer
 >  - This new version contains a small security fix. From
 >    http://tiswww.case.edu/php/chet/bash/NEWS:

 >    "Shells running as root no longer inherit PS4 from the environment,
 >    closing a security hole involving PS4 expansion performing command
 >    substitution."

 >    However, taking into account that bash is a critical package and the
 >    2016.11 release is very close I've marked this patch as "next".

Yes, I think that is the best approach as well.

Committed to next, thanks.
diff mbox

Patch

diff --git a/package/bash/0031-patchlevel-31.patch b/package/bash/0031-patchlevel-31.patch
deleted file mode 100644
index d285a1f..0000000
--- a/package/bash/0031-patchlevel-31.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0032-patchlevel-32.patch b/package/bash/0032-patchlevel-32.patch
deleted file mode 100644
index 6cdc0f1..0000000
--- a/package/bash/0032-patchlevel-32.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0033-patchlevel-33.patch b/package/bash/0033-patchlevel-33.patch
deleted file mode 100644
index 45fb686..0000000
--- a/package/bash/0033-patchlevel-33.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0034-patchlevel-34.patch b/package/bash/0034-patchlevel-34.patch
deleted file mode 100644
index 79c8945..0000000
--- a/package/bash/0034-patchlevel-34.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0035-patchlevel-35.patch b/package/bash/0035-patchlevel-35.patch
deleted file mode 100644
index c18b60d..0000000
--- a/package/bash/0035-patchlevel-35.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0036-patchlevel-36.patch b/package/bash/0036-patchlevel-36.patch
deleted file mode 100644
index f35b29b..0000000
--- a/package/bash/0036-patchlevel-36.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0037-patchlevel-37.patch b/package/bash/0037-patchlevel-37.patch
deleted file mode 100644
index 5f8aff3..0000000
--- a/package/bash/0037-patchlevel-37.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0038-patchlevel-38.patch b/package/bash/0038-patchlevel-38.patch
deleted file mode 100644
index 09fd9c2..0000000
--- a/package/bash/0038-patchlevel-38.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0039-patchlevel-39.patch b/package/bash/0039-patchlevel-39.patch
deleted file mode 100644
index 2a555b9..0000000
--- a/package/bash/0039-patchlevel-39.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0040-patchlevel-40.patch b/package/bash/0040-patchlevel-40.patch
deleted file mode 100644
index 2a03c45..0000000
--- a/package/bash/0040-patchlevel-40.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0041-patchlevel-41.patch b/package/bash/0041-patchlevel-41.patch
deleted file mode 100644
index c8ba4b1..0000000
--- a/package/bash/0041-patchlevel-41.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0042-patchlevel-42.patch b/package/bash/0042-patchlevel-42.patch
deleted file mode 100644
index bb3471c..0000000
--- a/package/bash/0042-patchlevel-42.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0043-patchlevel-43.patch b/package/bash/0043-patchlevel-43.patch
deleted file mode 100644
index a30a981..0000000
--- a/package/bash/0043-patchlevel-43.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0044-patchlevel-44.patch b/package/bash/0044-patchlevel-44.patch
deleted file mode 100644
index 62d5412..0000000
--- a/package/bash/0044-patchlevel-44.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0045-patchlevel-45.patch b/package/bash/0045-patchlevel-45.patch
deleted file mode 100644
index bb11b1a..0000000
--- a/package/bash/0045-patchlevel-45.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/0046-patchlevel-46.patch b/package/bash/0046-patchlevel-46.patch
deleted file mode 100644
index bc3798a..0000000
--- a/package/bash/0046-patchlevel-46.patch
+++ /dev/null
@@ -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_ */
diff --git a/package/bash/bash.hash b/package/bash/bash.hash
index faf2364..adbd608 100644
--- a/package/bash/bash.hash
+++ b/package/bash/bash.hash
@@ -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
diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index 3cd8d82..090cf52 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -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 \