diff --git a/.bash.metadata b/.bash.metadata
new file mode 100644
index 0000000..1a4d454
--- /dev/null
+++ b/.bash.metadata
@@ -0,0 +1 @@
+8de012df1e4f3e91f571c3eb8ec45b43d7c747eb SOURCES/bash-4.4.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ba1de94
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/bash-4.4.tar.gz
diff --git a/SOURCES/bash-2.02-security.patch b/SOURCES/bash-2.02-security.patch
new file mode 100644
index 0000000..f8a913b
--- /dev/null
+++ b/SOURCES/bash-2.02-security.patch
@@ -0,0 +1,11 @@
+--- bash-2.02-orig/parse.y	Wed Mar 25 18:16:23 1998
++++ bash-2.02/parse.y	Sun Apr 19 16:46:34 1998
+@@ -923,7 +923,7 @@
+ 
+ #if defined (READLINE)
+ char *current_readline_prompt = (char *)NULL;
+-char *current_readline_line = (char *)NULL;
++unsigned char *current_readline_line = (unsigned char *)NULL;
+ int current_readline_line_index = 0;
+ 
+ static int
diff --git a/SOURCES/bash-2.03-paths.patch b/SOURCES/bash-2.03-paths.patch
new file mode 100644
index 0000000..24ec5cc
--- /dev/null
+++ b/SOURCES/bash-2.03-paths.patch
@@ -0,0 +1,11 @@
+--- bash-3.0/config-top.h.paths	2003-08-05 15:36:12.000000000 +0100
++++ bash-3.0/config-top.h	2004-07-28 09:36:27.117205637 +0100
+@@ -66,7 +66,7 @@
+    the Posix.2 confstr () function, or CS_PATH define are not present. */
+ #ifndef STANDARD_UTILS_PATH
+ #define STANDARD_UTILS_PATH \
+-  "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
++  "/bin:/usr/bin:/usr/sbin:/sbin"
+ #endif
+ 
+ /* Default primary and secondary prompt strings. */
diff --git a/SOURCES/bash-2.03-profile.patch b/SOURCES/bash-2.03-profile.patch
new file mode 100644
index 0000000..ba3344b
--- /dev/null
+++ b/SOURCES/bash-2.03-profile.patch
@@ -0,0 +1,12 @@
+diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h
+--- bash-3.2/config-top.h.profile	2008-07-17 13:35:39.000000000 +0200
++++ bash-3.2/config-top.h	2008-07-17 13:42:18.000000000 +0200
+@@ -26,6 +26,8 @@
+    what POSIX.2 specifies. */
+ #define CONTINUE_AFTER_KILL_ERROR
+ 
++#define NON_INTERACTIVE_LOGIN_SHELLS
++
+ /* Define BREAK_COMPLAINS if you want the non-standard, but useful
+    error messages about `break' and `continue' out of context. */
+ #define BREAK_COMPLAINS
diff --git a/SOURCES/bash-2.05a-interpreter.patch b/SOURCES/bash-2.05a-interpreter.patch
new file mode 100644
index 0000000..ca497c4
--- /dev/null
+++ b/SOURCES/bash-2.05a-interpreter.patch
@@ -0,0 +1,224 @@
+diff --git a/config.h.in b/config.h.in
+index a5ad9e7..62a6b32 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -748,6 +748,9 @@
+ /* Define if you have the pselect function.  */
+ #undef HAVE_PSELECT
+ 
++/* Define if you have the pread function. */
++#undef HAVE_PREAD
++
+ /* Define if you have the putenv function.  */
+ #undef HAVE_PUTENV
+ 
+@@ -946,6 +949,9 @@
+ /* Define if you have the <dlfcn.h> header file.  */
+ #undef HAVE_DLFCN_H
+ 
++/* Define if you have the <elf.h> header file.  */
++#undef HAVE_ELF_H
++
+ /* Define if you have the <grp.h> header file.  */
+ #undef HAVE_GRP_H
+ 
+diff --git a/configure.ac b/configure.ac
+index ce4e9b6..eda95d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -700,7 +700,7 @@ BASH_HEADER_INTTYPES
+ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
+ 		 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
+ 		 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+-		 regex.h syslog.h ulimit.h)
++		 regex.h syslog.h ulimit.h elf.h)
+ AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
+ 		 sys/param.h sys/socket.h sys/stat.h \
+ 		 sys/time.h sys/times.h sys/types.h sys/wait.h)
+@@ -771,7 +771,7 @@ dnl checks for system calls
+ AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
+ 		getpagesize getpeername getrlimit getrusage gettimeofday \
+ 		kill killpg lstat pselect readlink sbrk select setdtablesize \
+-		setitimer tcgetpgrp uname ulimit waitpid)
++		setitimer tcgetpgrp uname ulimit waitpid pread)
+ AC_REPLACE_FUNCS(rename)
+ 
+ dnl checks for c library functions
+diff --git a/execute_cmd.c b/execute_cmd.c
+index 2a3df6d..b5cd405 100644
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -41,6 +41,10 @@
+ #  include <unistd.h>
+ #endif
+ 
++#ifdef HAVE_ELF_H
++# include <elf.h>
++#endif
++
+ #include "posixtime.h"
+ 
+ #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
+@@ -5486,6 +5490,14 @@ shell_execve (command, args, env)
+ 	{
+ 	  /* The file has the execute bits set, but the kernel refuses to
+ 	     run it for some reason.  See why. */
++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
++       int fd = open (command, O_RDONLY);
++
++       if (fd >= 0)
++               sample_len = read (fd, sample, sizeof (sample));
++       else
++               sample_len = -1;
++#endif
+ #if defined (HAVE_HASH_BANG_EXEC)
+ 	  READ_SAMPLE_BUF (command, sample, sample_len);
+ 	  if (sample_len > 0)
+@@ -5495,6 +5507,7 @@ shell_execve (command, args, env)
+ 	      char *interp;
+ 	      int ilen;
+ 
++              close (fd);
+ 	      interp = getinterp (sample, sample_len, (int *)NULL);
+ 	      ilen = strlen (interp);
+ 	      errno = i;
+@@ -5510,6 +5523,136 @@ shell_execve (command, args, env)
+ 	      return (EX_NOEXEC);
+ 	    }
+ #endif
++#if defined (HAVE_ELF_H)
++	  if (i == ENOENT
++	      && sample_len > EI_NIDENT
++	      && memcmp (sample, ELFMAG, SELFMAG) == 0)
++	    {
++	      off_t offset = -1;
++
++	      /* It is an ELF file.  Now determine whether it is dynamically
++		 linked and if yes, get the offset of the interpreter
++		 string.  */
++	      if (sample[EI_CLASS] == ELFCLASS32
++		  && sample_len > sizeof (Elf32_Ehdr))
++		{
++		  Elf32_Ehdr ehdr;
++		  Elf32_Phdr *phdr;
++		  int nphdr;
++
++		  /* We have to copy the data since the sample buffer
++		     might not be aligned correctly to be accessed as
++		     an Elf32_Ehdr struct.  */
++		  memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
++
++		  nphdr = ehdr.e_phnum;
++		  phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++		  if (phdr != NULL)
++		    {
++#ifdef HAVE_PREAD
++		      sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++					  ehdr.e_phoff);
++#else
++		      if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
++			sample_len = read (fd, phdr,
++					   nphdr * ehdr.e_phentsize);
++		      else
++			sample_len = -1;
++#endif
++		      if (sample_len == nphdr * ehdr.e_phentsize)
++			while (nphdr-- > 0)
++			  if (phdr[nphdr].p_type == PT_INTERP)
++			    {
++			      offset = phdr[nphdr].p_offset;
++			      break;
++			    }
++		      free (phdr);
++		    }
++		}
++	      else if (sample[EI_CLASS] == ELFCLASS64
++		       && sample_len > sizeof (Elf64_Ehdr))
++		{
++		  Elf64_Ehdr ehdr;
++		  Elf64_Phdr *phdr;
++		  int nphdr;
++
++		  /* We have to copy the data since the sample buffer
++		     might not be aligned correctly to be accessed as
++		     an Elf64_Ehdr struct.  */
++		  memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
++
++		  nphdr = ehdr.e_phnum;
++		  phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++		  if (phdr != NULL)
++		    {
++#ifdef HAVE_PREAD
++		      sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++					  ehdr.e_phoff);
++#else
++		      if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
++			sample_len = read (fd, phdr,
++					   nphdr * ehdr.e_phentsize);
++		      else
++			sample_len = -1;
++#endif
++		      if (sample_len == nphdr * ehdr.e_phentsize)
++			while (nphdr-- > 0)
++			  if (phdr[nphdr].p_type == PT_INTERP)
++			    {
++			      offset = phdr[nphdr].p_offset;
++			      break;
++			    }
++		      free (phdr);
++		    }
++		}
++
++	      if (offset != -1)
++		{
++		  size_t maxlen = 0;
++		  size_t actlen = 0;
++		  char *interp = NULL;
++
++		  do
++		    {
++		      if (actlen == maxlen)
++			{
++			  char *newinterp = realloc (interp, maxlen += 200);
++			  if (newinterp == NULL)
++			    {
++			      actlen = 0;
++			      break;
++			    }
++			  interp = newinterp;
++
++#ifdef HAVE_PREAD
++			  actlen = pread (fd, interp, maxlen, offset);
++#else
++			  if (lseek (fd, offset, SEEK_SET) != -1)
++			    actlen = read (fd, interp, maxlen);
++			  else
++			    actlen = -1;
++#endif
++			}
++		    }
++		  while (actlen > 0 && memchr (interp, '\0', actlen) == NULL);
++
++		  if (actlen > 0)
++		    {
++		      close (fd);
++		      errno = i;
++		      sys_error ("%s: %s: bad ELF interpreter", command,
++				 interp);
++		      free (interp);
++		      return (EX_NOEXEC);
++		    }
++
++		  free (interp);
++		}
++	    }
++#endif
++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
++	  close (fd);
++#endif
+ 	  errno = i;
+ 	  file_error (command);
+ 	}
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-2.05b-debuginfo.patch b/SOURCES/bash-2.05b-debuginfo.patch
new file mode 100644
index 0000000..3278cab
--- /dev/null
+++ b/SOURCES/bash-2.05b-debuginfo.patch
@@ -0,0 +1,10 @@
+--- bash-2.05b/builtins/Makefile.in.debuginfo	2003-03-25 17:25:21.000000000 +0000
++++ bash-2.05b/builtins/Makefile.in	2003-03-25 17:25:49.000000000 +0000
+@@ -93,7 +93,6 @@
+ 	$(RM) $@
+ 	./$(MKBUILTINS) $(DIRECTDEFINE) $<
+ 	$(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
+-	$(RM) $*.c
+ 
+ # How to make a .c file from a .def file.
+ .def.c:
diff --git a/SOURCES/bash-2.05b-manso.patch b/SOURCES/bash-2.05b-manso.patch
new file mode 100644
index 0000000..39ebf74
--- /dev/null
+++ b/SOURCES/bash-2.05b-manso.patch
@@ -0,0 +1,10 @@
+--- bash-2.05b/doc/builtins.1.manso	2003-02-10 18:58:21.000000000 +0000
++++ bash-2.05b/doc/builtins.1	2003-02-10 18:58:28.000000000 +0000
+@@ -10,6 +10,6 @@
+ ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
+ .SH BASH BUILTIN COMMANDS
+ .nr zZ 1
+-.so bash.1
++.so man1/bash.1
+ .SH SEE ALSO
+ bash(1), sh(1)
diff --git a/SOURCES/bash-2.05b-pgrp_sync.patch b/SOURCES/bash-2.05b-pgrp_sync.patch
new file mode 100644
index 0000000..bd7ded6
--- /dev/null
+++ b/SOURCES/bash-2.05b-pgrp_sync.patch
@@ -0,0 +1,11 @@
+--- bash-2.05b/aclocal.m4.pgrp_sync	2002-06-25 14:45:43.000000000 +0100
++++ bash-2.05b/aclocal.m4	2003-01-15 18:17:35.000000000 +0000
+@@ -1255,7 +1255,7 @@
+ 	wait(&status);
+ 	exit(ok ? 0 : 5);
+ }
+-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
++], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes,
+    [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
+     bash_cv_pgrp_pipe=no])
+ ])
diff --git a/SOURCES/bash-2.05b-xcc.patch b/SOURCES/bash-2.05b-xcc.patch
new file mode 100644
index 0000000..ad42832
--- /dev/null
+++ b/SOURCES/bash-2.05b-xcc.patch
@@ -0,0 +1,19 @@
+--- bash-3.1/Makefile.in.xcc	2005-10-25 19:37:52.000000000 +0100
++++ bash-3.1/Makefile.in	2005-12-23 16:11:09.000000000 +0000
+@@ -68,6 +68,7 @@
+ ARFLAGS = @ARFLAGS@
+ RANLIB = @RANLIB@
+ SIZE = @SIZE@
++STRIP = strip
+ 
+ INSTALL = @INSTALL@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -535,7 +536,7 @@
+ 	@chmod a+rx bashbug
+ 
+ strip:	$(Program) .made
+-	strip $(Program)
++	$(STRIP) $(Program)
+ 	ls -l $(Program)
+ 	-$(SIZE) $(Program)
+ 
diff --git a/SOURCES/bash-3.2-audit.patch b/SOURCES/bash-3.2-audit.patch
new file mode 100644
index 0000000..48a1751
--- /dev/null
+++ b/SOURCES/bash-3.2-audit.patch
@@ -0,0 +1,96 @@
+diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in
+--- bash-4.2/config.h.in.audit	2013-01-31 16:26:16.857698992 +0100
++++ bash-4.2/config.h.in	2013-01-31 16:26:16.876699255 +0100
+@@ -1131,6 +1131,14 @@
+ 
+ /* End additions for lib/intl */
+ 
++
++/* Additions for lib/readline */
++
++/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */
++#undef HAVE_DECL_AUDIT_USER_TTY
++
++/* End additions for lib/readline */
++
+ #include "config-bot.h"
+ 
+ #endif /* _CONFIG_H_ */
+diff -up bash-4.2/configure.in.audit bash-4.2/configure.in
+--- bash-4.2/configure.in.audit	2013-01-31 16:26:16.858699005 +0100
++++ bash-4.2/configure.ac	2013-01-31 16:26:16.877699269 +0100
+@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK
+ BASH_SYS_PGRP_SYNC
+ BASH_SYS_SIGNAL_VINTAGE
+ 
++AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
++
+ dnl checking for the presence of certain library symbols
+ BASH_SYS_ERRLIST
+ BASH_SYS_SIGLIST
+diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c
+--- bash-4.2/lib/readline/readline.c.audit	2013-01-31 16:26:16.871699185 +0100
++++ bash-4.2/lib/readline/readline.c	2013-01-31 17:24:23.902744860 +0100
+@@ -55,6 +55,12 @@
+ extern int errno;
+ #endif /* !errno */
+ 
++#if defined (HAVE_DECL_AUDIT_USER_TTY)
++#  include <sys/socket.h>
++#  include <linux/audit.h>
++#  include <linux/netlink.h>
++#endif
++
+ /* System-specific feature definitions and include files. */
+ #include "rldefs.h"
+ #include "rlmbutil.h"
+@@ -301,7 +307,48 @@ rl_set_prompt (prompt)
+   rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
+   return 0;
+ }
+-  
++
++#if defined (HAVE_DECL_AUDIT_USER_TTY)
++/* Report STRING to the audit system. */
++static void
++audit_tty (char *string)
++{
++  struct sockaddr_nl addr;
++  struct msghdr msg;
++  struct nlmsghdr nlm;
++  struct iovec iov[2];
++  size_t size;
++  int fd;
++
++  size = strlen (string) + 1;
++  fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
++  if (fd < 0)
++    return;
++  nlm.nlmsg_len = NLMSG_LENGTH (size);
++  nlm.nlmsg_type = AUDIT_USER_TTY;
++  nlm.nlmsg_flags = NLM_F_REQUEST;
++  nlm.nlmsg_seq = 0;
++  nlm.nlmsg_pid = 0;
++  iov[0].iov_base = &nlm;
++  iov[0].iov_len = sizeof (nlm);
++  iov[1].iov_base = string;
++  iov[1].iov_len = size;
++  addr.nl_family = AF_NETLINK;
++  addr.nl_pad = 0;
++  addr.nl_pid = 0;
++  addr.nl_groups = 0;
++  msg.msg_name = &addr;
++  msg.msg_namelen = sizeof (addr);
++  msg.msg_iov = iov;
++  msg.msg_iovlen = 2;
++  msg.msg_control = NULL;
++  msg.msg_controllen = 0;
++  msg.msg_flags = 0;
++  (void)sendmsg (fd, &msg, 0);
++  close (fd);
++}
++#endif
++
+ /* Read a line of input.  Prompt with PROMPT.  An empty PROMPT means
+    none.  A return value of NULL means that EOF was encountered. */
+ char *
diff --git a/SOURCES/bash-3.2-ssh_source_bash.patch b/SOURCES/bash-3.2-ssh_source_bash.patch
new file mode 100644
index 0000000..5bd19ce
--- /dev/null
+++ b/SOURCES/bash-3.2-ssh_source_bash.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
+--- bash-4.0/config-top.h.ssh_source_bash	2009-01-21 15:20:06.000000000 +0100
++++ bash-4.0/config-top.h	2009-01-21 15:25:46.000000000 +0100
+@@ -90,7 +90,7 @@
+    sshd and source the .bashrc if so (like the rshd behavior).  This checks
+    for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
+    which can be fooled under certain not-uncommon circumstances. */
+-/* #define SSH_SOURCE_BASHRC */
++#define SSH_SOURCE_BASHRC
+ 
+ /* Define if you want the case-capitalizing operators (~[~]) and the
+    `capcase' variable attribute (declare -c). */
diff --git a/SOURCES/bash-4.0-nobits.patch b/SOURCES/bash-4.0-nobits.patch
new file mode 100644
index 0000000..0e77fda
--- /dev/null
+++ b/SOURCES/bash-4.0-nobits.patch
@@ -0,0 +1,154 @@
+diff -up bash-4.0/execute_cmd.c.nobits bash-4.0/execute_cmd.c
+--- bash-4.0/execute_cmd.c.nobits	2009-08-11 11:53:38.000000000 +0200
++++ bash-4.0/execute_cmd.c	2009-08-14 16:18:18.000000000 +0200
+@@ -4747,6 +4747,7 @@ shell_execve (command, args, env)
+ 	      && memcmp (sample, ELFMAG, SELFMAG) == 0)
+ 	    {
+ 	      off_t offset = -1;
++              int dynamic_nobits = 0;
+ 
+ 	      /* It is an ELF file.  Now determine whether it is dynamically
+ 		 linked and if yes, get the offset of the interpreter
+@@ -4756,13 +4757,61 @@ shell_execve (command, args, env)
+ 		{
+ 		  Elf32_Ehdr ehdr;
+ 		  Elf32_Phdr *phdr;
+-		  int nphdr;
++                  Elf32_Shdr *shdr;
++		  int nphdr, nshdr;
+ 
+ 		  /* We have to copy the data since the sample buffer
+ 		     might not be aligned correctly to be accessed as
+ 		     an Elf32_Ehdr struct.  */
+ 		  memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
+ 
++		  nshdr = ehdr.e_shnum;
++		  shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++                  
++		  if (shdr != NULL)
++		    {
++#ifdef HAVE_PREAD
++		      sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++					  ehdr.e_shoff);
++#else
++		      if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
++			sample_len = read (fd, shdr,
++					   nshdr * ehdr.e_shentsize);
++		      else
++			sample_len = -1;
++#endif
++		      if (sample_len == nshdr * ehdr.e_shentsize)
++                        {
++                          char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
++                          if (strings != NULL)
++                            {
++#ifdef HAVE_PREAD
++		              sample_len = pread (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size,
++					     shdr[ehdr.e_shstrndx].sh_offset);
++#else
++		              if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
++                                         SEEK_SET) != -1)
++			        sample_len = read (fd, strings,
++			  		       shdr[ehdr.e_shstrndx].sh_size);
++		              else
++			        sample_len = -1;
++#endif
++                              if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
++			        while (nshdr-- > 0)
++                                  if (strcmp (strings + shdr[nshdr].sh_name,
++                                              ".interp") == 0 &&
++                                      shdr[nshdr].sh_type == SHT_NOBITS)
++                                    {
++                                      dynamic_nobits++;
++                                      break;
++                                    }
++                              free (strings);
++                            }
++                        }
++		      free (shdr);
++		    }
++
+ 		  nphdr = ehdr.e_phnum;
+ 		  phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
+ 		  if (phdr != NULL)
+@@ -4792,13 +4841,60 @@ shell_execve (command, args, env)
+ 		{
+ 		  Elf64_Ehdr ehdr;
+ 		  Elf64_Phdr *phdr;
+-		  int nphdr;
++                  Elf64_Shdr *shdr;
++		  int nphdr, nshdr;
+ 
+ 		  /* We have to copy the data since the sample buffer
+ 		     might not be aligned correctly to be accessed as
+ 		     an Elf64_Ehdr struct.  */
+ 		  memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
+ 
++		  nshdr = ehdr.e_shnum;
++		  shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++		  if (shdr != NULL)
++		    {
++#ifdef HAVE_PREAD
++		      sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++					  ehdr.e_shoff);
++#else
++		      if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
++			sample_len = read (fd, shdr,
++					   nshdr * ehdr.e_shentsize);
++		      else
++			sample_len = -1;
++#endif
++		      if (sample_len == nshdr * ehdr.e_shentsize)
++                        {
++                          char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
++                          if (strings != NULL)
++                            {
++#ifdef HAVE_PREAD
++		              sample_len = pread (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size,
++					     shdr[ehdr.e_shstrndx].sh_offset);
++#else
++		              if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
++                                         SEEK_SET) != -1)
++			        sample_len = read (fd, strings,
++			  		       shdr[ehdr.e_shstrndx].sh_size);
++		              else
++			        sample_len = -1;
++#endif
++                              if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
++			        while (nshdr-- > 0)
++                                  if (strcmp (strings + shdr[nshdr].sh_name,
++                                              ".interp") == 0 &&
++                                      shdr[nshdr].sh_type == SHT_NOBITS)
++                                    {
++                                      dynamic_nobits++;
++                                      break;
++                                    }
++                              free (strings);
++                            }
++                        }
++		      free (shdr);
++		    }
++
+ 		  nphdr = ehdr.e_phnum;
+ 		  phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
+ 		  if (phdr != NULL)
+@@ -4858,8 +4954,15 @@ shell_execve (command, args, env)
+ 		    {
+ 		      close (fd);
+ 		      errno = i;
+-		      sys_error ("%s: %s: bad ELF interpreter", command,
+-				 interp);
++                      if (dynamic_nobits > 0)
++                        {
++                          sys_error ("%s: bad ELF interpreter", command);
++                        }
++                      else
++                        {
++		          sys_error ("%s: %s: bad ELF interpreter", command,
++				     interp);
++                        }
+ 		      free (interp);
+ 		      return (EX_NOEXEC);
+ 		    }
diff --git a/SOURCES/bash-4.1-broken_pipe.patch b/SOURCES/bash-4.1-broken_pipe.patch
new file mode 100644
index 0000000..e083374
--- /dev/null
+++ b/SOURCES/bash-4.1-broken_pipe.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h
+--- bash-4.1/config-top.h.broken_pipe	2011-01-06 18:01:30.000000000 +0100
++++ bash-4.1/config-top.h	2011-01-06 18:02:14.000000000 +0100
+@@ -51,7 +51,7 @@
+ /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
+    like `echo' and `printf' to report errors when output does not succeed
+    due to EPIPE. */
+-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
++#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
+ 
+ /* The default value of the PATH variable. */
+ #ifndef DEFAULT_PATH_VALUE
diff --git a/SOURCES/bash-4.1-defer-sigchld-trap.patch b/SOURCES/bash-4.1-defer-sigchld-trap.patch
new file mode 100644
index 0000000..e00adec
--- /dev/null
+++ b/SOURCES/bash-4.1-defer-sigchld-trap.patch
@@ -0,0 +1,11 @@
+diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c
+--- bash-4.1/jobs.c	2009-11-30 03:42:05.000000000 +0530
++++ bash-4.1.patched/jobs.c	2012-03-06 16:44:15.706595703 +0530
+@@ -3037,6 +3037,7 @@ waitchld (wpid, block)
+   pid_t pid;
+ 
+   int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
++  int called_from_sighand = sigchld;
+   static int wcontinued = WCONTINUED;	/* run-time fix for glibc problem */
+ 
+   call_set_current = children_exited = 0;
diff --git a/SOURCES/bash-4.1-examples.patch b/SOURCES/bash-4.1-examples.patch
new file mode 100644
index 0000000..19159e7
--- /dev/null
+++ b/SOURCES/bash-4.1-examples.patch
@@ -0,0 +1,24 @@
+diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
+--- bash-4.1/examples/loadables/Makefile.in.examples	2010-06-22 16:20:02.000000000 +0200
++++ bash-4.1/examples/loadables/Makefile.in	2010-06-22 16:20:41.000000000 +0200
+@@ -43,7 +43,7 @@ host_os = @host_os@
+ host_cpu = @host_cpu@
+ host_vendor = @host_vendor@
+ 
+-CFLAGS = @CFLAGS@
++CFLAGS = -O2 -g
+ LOCAL_CFLAGS = @LOCAL_CFLAGS@
+ DEFS = @DEFS@
+ LOCAL_DEFS = @LOCAL_DEFS@
+diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
+--- bash-4.1/examples/loadables/perl/Makefile.in.examples	2010-06-22 16:20:46.000000000 +0200
++++ bash-4.1/examples/loadables/perl/Makefile.in	2010-06-22 16:21:04.000000000 +0200
+@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
+ 
+ PERL5 = perl5
+ 
+-CFLAGS = @CFLAGS@
++CFLAGS = -O2 -g
+ 
+ #
+ # These values are generated for configure by ${topdir}/support/shobj-conf.
diff --git a/SOURCES/bash-4.2-coverity.patch b/SOURCES/bash-4.2-coverity.patch
new file mode 100644
index 0000000..5fc8456
--- /dev/null
+++ b/SOURCES/bash-4.2-coverity.patch
@@ -0,0 +1,99 @@
+diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c
+--- bash-4.2/execute_cmd.c.coverity	2011-02-24 13:04:35.000000000 +0100
++++ bash-4.2/execute_cmd.c	2011-02-24 13:49:13.000000000 +0100
+@@ -5036,7 +5036,7 @@ shell_execve (command, args, env)
+ 		  Elf32_Ehdr ehdr;
+ 		  Elf32_Phdr *phdr;
+                   Elf32_Shdr *shdr;
+-		  int nphdr, nshdr;
++		  Elf32_Half nphdr, nshdr;
+ 
+ 		  /* We have to copy the data since the sample buffer
+ 		     might not be aligned correctly to be accessed as
+@@ -5044,12 +5044,12 @@ shell_execve (command, args, env)
+ 		  memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
+ 
+ 		  nshdr = ehdr.e_shnum;
+-		  shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++		  shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
+                   
+ 		  if (shdr != NULL)
+ 		    {
+ #ifdef HAVE_PREAD
+-		      sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++		      sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
+ 					  ehdr.e_shoff);
+ #else
+ 		      if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
+@@ -5091,11 +5091,11 @@ shell_execve (command, args, env)
+ 		    }
+ 
+ 		  nphdr = ehdr.e_phnum;
+-		  phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++		  phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
+ 		  if (phdr != NULL)
+ 		    {
+ #ifdef HAVE_PREAD
+-		      sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++		      sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
+ 					  ehdr.e_phoff);
+ #else
+ 		      if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
+@@ -5120,7 +5120,7 @@ shell_execve (command, args, env)
+ 		  Elf64_Ehdr ehdr;
+ 		  Elf64_Phdr *phdr;
+                   Elf64_Shdr *shdr;
+-		  int nphdr, nshdr;
++		  Elf32_Half nphdr, nshdr;
+ 
+ 		  /* We have to copy the data since the sample buffer
+ 		     might not be aligned correctly to be accessed as
+@@ -5128,11 +5128,11 @@ shell_execve (command, args, env)
+ 		  memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
+ 
+ 		  nshdr = ehdr.e_shnum;
+-		  shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++		  shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
+ 		  if (shdr != NULL)
+ 		    {
+ #ifdef HAVE_PREAD
+-		      sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++		      sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
+ 					  ehdr.e_shoff);
+ #else
+ 		      if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
+@@ -5174,11 +5174,11 @@ shell_execve (command, args, env)
+ 		    }
+ 
+ 		  nphdr = ehdr.e_phnum;
+-		  phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++		  phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
+ 		  if (phdr != NULL)
+ 		    {
+ #ifdef HAVE_PREAD
+-		      sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++		      sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
+ 					  ehdr.e_phoff);
+ #else
+ 		      if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
+@@ -5200,8 +5200,8 @@ shell_execve (command, args, env)
+ 
+ 	      if (offset != -1)
+ 		{
+-		  size_t maxlen = 0;
+-		  size_t actlen = 0;
++		  ssize_t maxlen = 0;
++		  ssize_t actlen = 0;
+ 		  char *interp = NULL;
+ 
+ 		  do
+@@ -5250,7 +5250,8 @@ shell_execve (command, args, env)
+ 	    }
+ #endif
+ #if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
+-	  close (fd);
++          if (fd >= 0)
++	    close (fd);
+ #endif
+ 	  errno = i;
+ 	  file_error (command);
diff --git a/SOURCES/bash-4.2-manpage_trap.patch b/SOURCES/bash-4.2-manpage_trap.patch
new file mode 100644
index 0000000..e81882f
--- /dev/null
+++ b/SOURCES/bash-4.2-manpage_trap.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
+--- bash-4.1/doc/bash.1.manpage_trap	2012-08-28 10:06:00.561999092 +0200
++++ bash-4.1/doc/bash.1	2012-08-28 10:06:24.225304505 +0200
+@@ -9251,7 +9251,7 @@ being inverted via
+ These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option.
+ .if t .sp 0.5
+ .if n .sp 1
+-Signals ignored upon entry to the shell cannot be trapped or reset.
++Signals ignored upon entry to the shell cannot be trapped, reset or listed.
+ Trapped signals that are not being ignored are reset to their original
+ values in a subshell or subshell environment when one is created.
+ The return status is false if any
diff --git a/SOURCES/bash-4.2-rc2-logout.patch b/SOURCES/bash-4.2-rc2-logout.patch
new file mode 100644
index 0000000..f63c8b6
--- /dev/null
+++ b/SOURCES/bash-4.2-rc2-logout.patch
@@ -0,0 +1,41 @@
+diff --git a/config-top.h b/config-top.h
+index 026d4a4..cb0e002 100644
+--- a/config-top.h
++++ b/config-top.h
+@@ -92,7 +92,7 @@
+ /* #define SYS_BASHRC "/etc/bash.bashrc" */
+ 
+ /* System-wide .bash_logout for login shells. */
+-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
+ 
+ /* Define this to make non-interactive shells begun with argv[0][0] == '-'
+    run the startup files when not in posix mode. */
+diff --git a/doc/bash.1 b/doc/bash.1
+index 04ce845..bfde55e 100644
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -335,8 +335,8 @@ option may be used when the shell is started to inhibit this behavior.
+ When an interactive login shell exits,
+ or a non-interactive login shell executes the \fBexit\fP builtin command,
+ .B bash
+-reads and executes commands from the file \fI~/.bash_logout\fP, if it
+-exists.
++reads and executes commands from the files \fI~/.bash_logout\fP
++and \fI/etc/bash.bash_logout\fP, if the files exists.
+ .PP
+ When an interactive shell that is not a login shell is started,
+ .B bash
+@@ -10558,6 +10558,9 @@ The \fBbash\fP executable
+ .FN /etc/profile
+ The systemwide initialization file, executed for login shells
+ .TP
++.FN /etc/bash.bash_logout
++The systemwide login shell cleanup file, executed when a login shell exits
++.TP
+ .FN ~/.bash_profile
+ The personal initialization file, executed for login shells
+ .TP
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.2-size_type.patch b/SOURCES/bash-4.2-size_type.patch
new file mode 100644
index 0000000..ab56677
--- /dev/null
+++ b/SOURCES/bash-4.2-size_type.patch
@@ -0,0 +1,14 @@
+diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h
+--- bash-4.2/variables.h.size_type	2012-11-29 10:33:25.109036844 +0100
++++ bash-4.2/variables.h	2012-11-29 10:46:12.718530162 +0100
+@@ -95,8 +95,8 @@ typedef struct variable {
+ 
+ typedef struct _vlist {
+   SHELL_VAR **list;
+-  int list_size;	/* allocated size */
+-  int list_len;		/* current number of entries */
++  size_t list_size;	/* allocated size */
++  size_t list_len;	/* current number of entries */
+ } VARLIST;
+ 
+ /* The various attributes that a given variable can have. */
diff --git a/SOURCES/bash-4.3-man-ulimit.patch b/SOURCES/bash-4.3-man-ulimit.patch
new file mode 100644
index 0000000..0c3fa0a
--- /dev/null
+++ b/SOURCES/bash-4.3-man-ulimit.patch
@@ -0,0 +1,15 @@
+diff --git a/doc/bash.1 b/doc/bash.1
+index 6e8aebb..e846e68 100644
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -10333,6 +10333,7 @@ and
+ which are in 512-byte increments.
+ The return status is 0 unless an invalid option or argument is supplied,
+ or an error occurs while setting a new limit.
++In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options.
+ .RE
+ .TP
+ \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.3-memleak-lc_all.patch b/SOURCES/bash-4.3-memleak-lc_all.patch
new file mode 100644
index 0000000..77e86de
--- /dev/null
+++ b/SOURCES/bash-4.3-memleak-lc_all.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.3/locale.c.old bash-4.3/locale.c
+--- bash-4.3/locale.c.old	2015-07-15 11:55:00.002857301 +0200
++++ bash-4.3/locale.c	2015-07-15 11:48:36.698086257 +0200
+@@ -77,8 +77,6 @@ set_default_locale ()
+ {
+ #if defined (HAVE_SETLOCALE)
+   default_locale = setlocale (LC_ALL, "");
+-  if (default_locale)
+-    default_locale = savestring (default_locale);
+ #endif /* HAVE_SETLOCALE */
+   bindtextdomain (PACKAGE, LOCALEDIR);
+   textdomain (PACKAGE);
diff --git a/SOURCES/bash-4.3-noecho.patch b/SOURCES/bash-4.3-noecho.patch
new file mode 100644
index 0000000..2906fbf
--- /dev/null
+++ b/SOURCES/bash-4.3-noecho.patch
@@ -0,0 +1,46 @@
+diff --git a/parse.y b/parse.y
+index 30425a5..85f1c4f 100644
+--- a/parse.y
++++ b/parse.y
+@@ -4228,6 +4228,8 @@ xparse_dolparen (base, string, indp, flags)
+   save_parser_state (&ps);
+   save_input_line_state (&ls);
+   orig_eof_token = shell_eof_token;
++  /* avoid echoing every substitution again */
++  echo_input_at_read = 0;
+ 
+   /*(*/
+   parser_state |= PST_CMDSUBST|PST_EOFTOKEN;	/* allow instant ')' */ /*(*/
+diff --git a/subst.c b/subst.c
+index f1a4df1..a93a4ce 100644
+--- a/subst.c
++++ b/subst.c
+@@ -8513,6 +8513,7 @@ param_expand (string, sindex, quoted, expanded_something,
+   WORD_LIST *list;
+   WORD_DESC *tdesc, *ret;
+   int tflag;
++  int old_echo_input;
+ 
+ /*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/
+   zindex = *sindex;
+@@ -8831,6 +8832,9 @@ arithsub:
+ 	}
+ 
+ comsub:
++      old_echo_input = echo_input_at_read;
++      /* avoid echoing every substitution again */
++      echo_input_at_read = 0;
+       if (pflags & PF_NOCOMSUB)
+ 	/* we need zindex+1 because string[zindex] == RPAREN */
+ 	temp1 = substring (string, *sindex, zindex+1);
+@@ -8843,6 +8847,7 @@ comsub:
+ 	}
+       FREE (temp);
+       temp = temp1;
++      echo_input_at_read = old_echo_input;
+       break;
+ 
+     /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-assignment-error.patch b/SOURCES/bash-4.4-assignment-error.patch
new file mode 100644
index 0000000..9645503
--- /dev/null
+++ b/SOURCES/bash-4.4-assignment-error.patch
@@ -0,0 +1,31 @@
+diff --git a/execute_cmd.h b/execute_cmd.h
+--- a/execute_cmd.h
++++ b/execute_cmd.h
+@@ -37,6 +37,9 @@ struct func_array_state
+   };
+ #endif
+ 
++/* Variables delared in execute_cmd.c, used by many other files */
++extern int executing_command_builtin;
++
+ extern struct fd_bitmap *new_fd_bitmap __P((int));
+ extern void dispose_fd_bitmap __P((struct fd_bitmap *));
+ extern void close_fd_bitmap __P((struct fd_bitmap *));
+diff --git a/subst.c b/subst.c
+--- a/subst.c
++++ b/subst.c
+@@ -10676,11 +10676,12 @@ expand_word_list_internal (list, eflags)
+ 		  tint = do_word_assignment (temp_list->word, 0);
+ 		  this_command_name = savecmd;
+ 		  /* Variable assignment errors in non-interactive shells
+-		     running in Posix.2 mode cause the shell to exit. */
++		     running in Posix.2 mode cause the shell to exit, unless 
++		     they are being run by the `command' builtin. */
+ 		  if (tint == 0)
+ 		    {
+ 		      last_command_exit_value = EXECUTION_FAILURE;
+-		      if (interactive_shell == 0 && posixly_correct)
++		      if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0)
+ 			exp_jump_to_top_level (FORCE_EOF);
+ 		      else
+ 			exp_jump_to_top_level (DISCARD);
diff --git a/SOURCES/bash-4.4-case-in-command-subst.patch b/SOURCES/bash-4.4-case-in-command-subst.patch
new file mode 100644
index 0000000..12509ed
--- /dev/null
+++ b/SOURCES/bash-4.4-case-in-command-subst.patch
@@ -0,0 +1,18 @@
+diff --git a/parse.y b/parse.y
+--- a/parse.y
++++ b/parse.y
+@@ -4011,11 +4011,13 @@ eof_error:
+ 		  tflags |= LEX_RESWDOK;
+ 		  lex_rwlen = 0;
+ 		}
+-	       else
++	       else if (shellmeta (ch) == 0)
+ 		{
+ 		  tflags &= ~LEX_RESWDOK;
+ /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
+ 		}
++	      else	/* can't be in a reserved word any more */
++	        lex_rwlen = 0;
+ 	    }
+ 	  else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
+ 	    ;	/* don't modify LEX_RESWDOK if we're starting a comment */
diff --git a/SOURCES/bash-4.4-coverity.patch b/SOURCES/bash-4.4-coverity.patch
new file mode 100644
index 0000000..c1fc747
--- /dev/null
+++ b/SOURCES/bash-4.4-coverity.patch
@@ -0,0 +1,203 @@
+diff --git a/builtins/fc.def b/builtins/fc.def
+index fe16471..98c53db 100644
+--- a/builtins/fc.def
++++ b/builtins/fc.def
+@@ -423,6 +423,7 @@ fc_builtin (list)
+     {
+       sh_wrerror ();
+       fclose (stream);
++      FREE (fn);
+       return (EXECUTION_FAILURE);
+     }
+   fclose (stream);
+diff --git a/execute_cmd.c b/execute_cmd.c
+index 63a332a..15b5e19 100644
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -2196,8 +2196,10 @@ coproc_setvars (cp)
+   if (v == 0)
+     {
+       v = find_variable_nameref_for_create (cp->c_name, 1);
+-      if (v == INVALID_NAMEREF_VALUE)
+-	return;
++      if (v == INVALID_NAMEREF_VALUE) {
++        free (namevar);
++        return;
++      }
+       if (v && nameref_p (v))
+ 	{
+ 	  free (cp->c_name);
+@@ -2210,6 +2212,7 @@ coproc_setvars (cp)
+     {
+       if (readonly_p (v))
+ 	err_readonly (cp->c_name);
++      free (namevar);
+       return;
+     }
+   if (v == 0)
+@@ -5528,7 +5531,6 @@ shell_execve (command, args, env)
+ 	      char *interp;
+ 	      int ilen;
+ 
+-              close (fd);
+ 	      interp = getinterp (sample, sample_len, (int *)NULL);
+ 	      ilen = strlen (interp);
+ 	      errno = i;
+diff --git a/expr.c b/expr.c
+index 172964a..5dc57c0 100644
+--- a/expr.c
++++ b/expr.c
+@@ -207,7 +207,8 @@ static intmax_t exp5 __P((void));
+ static intmax_t exp4 __P((void));
+ static intmax_t expshift __P((void));
+ static intmax_t exp3 __P((void));
+-static intmax_t exp2 __P((void));
++/* Avoid name clash with standard exp2 */
++static intmax_t bash_exp2 __P((void));
+ static intmax_t	exppower __P((void));
+ static intmax_t exp1 __P((void));
+ static intmax_t exp0 __P((void));
+@@ -809,14 +810,14 @@ exp3 ()
+ {
+   register intmax_t val1, val2;
+ 
+-  val1 = exp2 ();
++  val1 = bash_exp2 ();
+ 
+   while ((curtok == PLUS) || (curtok == MINUS))
+     {
+       int op = curtok;
+ 
+       readtok ();
+-      val2 = exp2 ();
++      val2 = bash_exp2 ();
+ 
+       if (op == PLUS)
+ 	val1 += val2;
+@@ -828,7 +829,7 @@ exp3 ()
+ }
+ 
+ static intmax_t
+-exp2 ()
++bash_exp2 ()
+ {
+   register intmax_t val1, val2;
+ #if defined (HAVE_IMAXDIV)
+diff --git a/lib/glob/glob.c b/lib/glob/glob.c
+index 7f6eafe..c018e29 100644
+--- a/lib/glob/glob.c
++++ b/lib/glob/glob.c
+@@ -576,7 +576,7 @@ glob_vector (pat, dir, flags)
+   register char *nextname, *npat, *subdir;
+   unsigned int count;
+   int lose, skip, ndirs, isdir, sdlen, add_current, patlen;
+-  register char **name_vector;
++  register char **name_vector = NULL;
+   register unsigned int i;
+   int mflags;		/* Flags passed to strmatch (). */
+   int pflags;		/* flags passed to sh_makepath () */
+@@ -894,7 +894,7 @@ glob_vector (pat, dir, flags)
+ 	}
+ 
+       /* Don't call QUIT; here; let higher layers deal with it. */
+-
++      FREE (name_vector);
+       return ((char **)NULL);
+     }
+ 
+diff --git a/lib/sh/pathcanon.c b/lib/sh/pathcanon.c
+index f19bd55..2a565d6 100644
+--- a/lib/sh/pathcanon.c
++++ b/lib/sh/pathcanon.c
+@@ -227,7 +227,7 @@ sh_canonpath (path, flags)
+       if (result[2] == '\0')	/* short-circuit for bare `//' */
+ 	result[1] = '\0';
+       else
+-	strcpy (result, result + 1);
++	memmove(result, result + 1, strlen(result + 1) + 1);
+     }
+ 
+   return (result);
+diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c
+index 26016b7..b64c4cd 100644
+--- a/lib/sh/pathphys.c
++++ b/lib/sh/pathphys.c
+@@ -245,7 +245,7 @@ error:
+       if (result[2] == '\0')	/* short-circuit for bare `//' */
+ 	result[1] = '\0';
+       else
+-	strcpy (result, result + 1);
++	memmove(result, result + 1, strlen(result + 1) + 1);
+     }
+ 
+   return (result);
+diff --git a/shell.c b/shell.c
+index b43de50..4aae182 100644
+--- a/shell.c
++++ b/shell.c
+@@ -1948,8 +1948,10 @@ show_shell_usage (fp, extra)
+   fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp);
+ 
+   for (i = 0, set_opts = 0; shell_builtins[i].name; i++)
+-    if (STREQ (shell_builtins[i].name, "set"))
++    if (STREQ (shell_builtins[i].name, "set")) {
+       set_opts = savestring (shell_builtins[i].short_doc);
++      break;
++    }
+   if (set_opts)
+     {
+       s = strchr (set_opts, '[');
+diff --git a/subst.c b/subst.c
+index 5f3e41e..7574617 100644
+--- a/subst.c
++++ b/subst.c
+@@ -5182,8 +5182,11 @@ parameter_list_transform (xc, itype, quoted)
+   list = list_rest_of_args ();
+   if (list == 0)
+     return ((char *)NULL);
+-  if (xc == 'A')
+-    return (pos_params_assignment (list, itype, quoted));
++  if (xc == 'A') {
++      ret = pos_params_assignment (list, itype, quoted);
++      dispose_words (list);
++      return (ret);
++  }
+   ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted);
+   dispose_words (list);
+   return (ret);
+@@ -6813,6 +6816,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
+ 	{
+ 	  report_error (_("%s: invalid indirect expansion"), name);
+ 	  free (vname);
++      free (t1);
+ 	  dispose_word (w);
+ 	  return &expand_wdesc_error;
+ 	}
+@@ -6820,6 +6824,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
+ 	{
+ 	  report_error (_("%s: invalid variable name"), vname);
+ 	  free (vname);
++      free (t1);
+ 	  dispose_word (w);
+ 	  return &expand_wdesc_error;
+ 	}
+diff --git a/support/man2html.c b/support/man2html.c
+index 6ba5061..1d9e376 100644
+--- a/support/man2html.c
++++ b/support/man2html.c
+@@ -522,6 +522,7 @@ read_man_page(char *filename)
+ 			man_buf[buf_size] = '\n';
+ 			man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0';
+ 		} else {
++            free (man_buf);
+ 			man_buf = NULL;
+ 		}
+ 		fclose(man_stream);
+@@ -2562,7 +2563,6 @@ scan_request(char *c)
+ 					h = name;
+ 				if (stat(h, &stbuf) != -1)
+ 					l = stbuf.st_size;
+-				buf = stralloc(l + 4);
+ #if NOCGI
+ 				if (!out_length) {
+ 					char   *t, *s;
diff --git a/SOURCES/bash-4.4-no-loadable-builtins.patch b/SOURCES/bash-4.4-no-loadable-builtins.patch
new file mode 100644
index 0000000..b03459d
--- /dev/null
+++ b/SOURCES/bash-4.4-no-loadable-builtins.patch
@@ -0,0 +1,15 @@
+diff --git a/Makefile.in b/Makefile.in
+index a1f9483..24c646a 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -800,7 +800,6 @@ install:	.made installdirs
+ 		infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ )
+ 	-( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
+ 	-( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
+-	-( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
+ 
+ install-strip:
+ 	$(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-1.patch b/SOURCES/bash-4.4-patch-1.patch
new file mode 100644
index 0000000..e0a6088
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-1.patch
@@ -0,0 +1,49 @@
+From 8ddc8d6e3a3d85eec6d4ba9b9ed2bc36bce56716 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 14 Nov 2016 14:26:51 -0500
+Subject: [PATCH] Bash-4.4 patch 1
+
+---
+ lib/readline/history.c | 6 +++++-
+ patchlevel.h           | 2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/lib/readline/history.c b/lib/readline/history.c
+index 3b8dbc5..9ff25a7 100644
+--- a/lib/readline/history.c
++++ b/lib/readline/history.c
+@@ -57,6 +57,8 @@ extern int errno;
+ /* How big to make the_history when we first allocate it. */
+ #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
+ 
+@@ -307,7 +309,9 @@ add_history (string)
+       if (history_size == 0)
+ 	{
+ 	  if (history_stifled && history_max_entries > 0)
+-	    history_size = history_max_entries + 2;
++	    history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
++				? MAX_HISTORY_INITIAL_SIZE
++				: history_max_entries + 2;
+ 	  else
+ 	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+ 	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+diff --git a/patchlevel.h b/patchlevel.h
+index 1cd7c96..40db1a3 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 1
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-10.patch b/SOURCES/bash-4.4-patch-10.patch
new file mode 100644
index 0000000..ec0fbfe
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-10.patch
@@ -0,0 +1,39 @@
+From 5b9762d6f0cd36ff1b88bde22efa30ad0ed27ec6 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 15:38:38 -0500
+Subject: [PATCH] Bash-4.4 patch 10
+
+---
+ builtins/read.def | 3 ++-
+ patchlevel.h      | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/builtins/read.def b/builtins/read.def
+index 48fda33..33821f3 100644
+--- a/builtins/read.def
++++ b/builtins/read.def
+@@ -181,7 +181,8 @@ read_builtin (list)
+      WORD_LIST *list;
+ {
+   register char *varname;
+-  int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
++  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;
+   unsigned int tmsec, tmusec;
+diff --git a/patchlevel.h b/patchlevel.h
+index 02f1d60..8002af7 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 9
++#define PATCHLEVEL 10
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-11.patch b/SOURCES/bash-4.4-patch-11.patch
new file mode 100644
index 0000000..d3ec76a
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-11.patch
@@ -0,0 +1,39 @@
+From 76bb456d8fcd870cd31b7bf9d90798cd97cee2ab Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 15:38:49 -0500
+Subject: [PATCH] Bash-4.4 patch 11
+
+---
+ patchlevel.h | 2 +-
+ sig.c        | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/patchlevel.h b/patchlevel.h
+index 8002af7..772676c 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 10
++#define PATCHLEVEL 11
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/sig.c b/sig.c
+index ad01631..e5bb739 100644
+--- a/sig.c
++++ b/sig.c
+@@ -585,7 +585,8 @@ termsig_handler (sig)
+ #if defined (JOB_CONTROL)
+   if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
+     hangup_all_jobs ();
+-  end_job_control ();
++  if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
++    end_job_control ();
+ #endif /* JOB_CONTROL */
+ 
+ #if defined (PROCESS_SUBSTITUTION)
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-12.patch b/SOURCES/bash-4.4-patch-12.patch
new file mode 100644
index 0000000..2983a94
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-12.patch
@@ -0,0 +1,119 @@
+From bc007799f0e1362100375bb95d952d28de4c62fb Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 27 Jan 2017 11:25:44 -0500
+Subject: [PATCH] Bash-4.4 patch 12
+
+---
+ patchlevel.h |  2 +-
+ subst.c      | 32 ++++++++++++++++++++------------
+ 2 files changed, 21 insertions(+), 13 deletions(-)
+
+diff --git a/patchlevel.h b/patchlevel.h
+index 772676c..93dbe0d 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 11
++#define PATCHLEVEL 12
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/subst.c b/subst.c
+index 027a13e..dbf0157 100644
+--- a/subst.c
++++ b/subst.c
+@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted)
+ 
+ /* 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.
++   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)
+      char **stringp, *separators, **endptr;
+@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separators, endptr)
+   register char *s;
+   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;
+ 
+   if (!stringp || !*stringp || !**stringp)
+@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separators, endptr)
+ 				 separators[1] == '\t' &&
+ 				 separators[2] == '\n' &&
+ 				 separators[3] == '\0';
+-  for (xflags = 0, s = ifs_value; s && *s; s++)
++  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 */
+     }
+ 
+   s = *stringp;
+   slen = 0;
+ 
+   /* Remove sequences of whitespace at the beginning of STRING, as
+-     long as those characters appear in IFS. */
+-  if (sh_style_split || !separators || !*separators)
++     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) && isifs (*s); s++);
++      for (; *s && spctabnl (*s) && islocalsep (*s); s++);
+ 
+       /* If the string is nothing but whitespace, update it and return. */
+       if (!*s)
+@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separators, endptr)
+ 
+      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;
++  /* 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);
+ 
+   /* Set ENDPTR to the first character after the end of the word. */
+@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separators, endptr)
+ 
+   /* 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]))
++  while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
+     sindex++;
+ 
+   /* If the first separator was IFS whitespace and the current character is
+      a non-whitespace IFS character, it should be part of the current field
+      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]))
++  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]) && isifs (s[sindex]))
++      while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
+ 	sindex++;
+     }
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-13.patch b/SOURCES/bash-4.4-patch-13.patch
new file mode 100644
index 0000000..abfb2de
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-13.patch
@@ -0,0 +1,38 @@
+From 1aef9c7b55dcef4af239caf93e01419e1c8e04ad Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:03:33 -0500
+Subject: [PATCH] Bash-4.4 patch 13
+
+---
+ patchlevel.h | 2 +-
+ redir.c      | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/patchlevel.h b/patchlevel.h
+index 93dbe0db..779671cd 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 12
++#define PATCHLEVEL 13
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/redir.c b/redir.c
+index 25488eaf..1858b0b0 100644
+--- a/redir.c
++++ b/redir.c
+@@ -469,6 +469,8 @@ here_document_to_fd (redirectee, ri)
+       return (fd);
+     }
+ 
++  SET_CLOSE_ON_EXEC (fd);
++
+   errno = r = 0;		/* XXX */
+   /* write_here_document returns 0 on success, errno on failure. */
+   if (redirectee->word)
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-14.patch b/SOURCES/bash-4.4-patch-14.patch
new file mode 100644
index 0000000..bceb8ea
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-14.patch
@@ -0,0 +1,85 @@
+From 2fb21d75bfddd724b0e45d4a51455a166467e496 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:03:47 -0500
+Subject: [PATCH] Bash-4.4 patch 14
+
+---
+ execute_cmd.c | 19 ++++++++++++++++---
+ patchlevel.h  |  2 +-
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/execute_cmd.c b/execute_cmd.c
+index 2a3df6d6..76a80766 100644
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -726,6 +726,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+     {
+       ofifo = num_fifos ();
+       ofifo_list = copy_fifo_list ((int *)&osize);
++      begin_unwind_frame ("internal_fifos");
++      add_unwind_protect (xfree, ofifo_list);
+       saved_fifo = 1;
+     }
+   else
+@@ -741,7 +743,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+       dispose_exec_redirects ();
+ #if defined (PROCESS_SUBSTITUTION)
+       if (saved_fifo)
+-	free ((void *)ofifo_list);
++        {
++	  free ((void *)ofifo_list);
++	  discard_unwind_frame ("internal_fifos");
++        }
+ #endif
+       return (last_command_exit_value = EXECUTION_FAILURE);
+     }
+@@ -1060,6 +1065,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+       if (nfifo > ofifo)
+ 	close_new_fifos ((char *)ofifo_list, osize);
+       free ((void *)ofifo_list);
++      discard_unwind_frame ("internal_fifos");
+     }
+ #endif
+ 
+@@ -4977,9 +4983,14 @@ execute_builtin_or_function (words, builtin, var, redirects,
+   char *ofifo_list;
+ #endif
+ 
+-#if defined (PROCESS_SUBSTITUTION)  
++#if defined (PROCESS_SUBSTITUTION)
++  begin_unwind_frame ("saved_fifos");
++  /* If we return, we longjmp and don't get a chance to restore the old
++     fifo list, so we add an unwind protect to free it */
+   ofifo = num_fifos ();
+   ofifo_list = copy_fifo_list (&osize);
++  if (ofifo_list)
++    add_unwind_protect (xfree, ofifo_list);
+ #endif
+ 
+   if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
+@@ -5063,7 +5074,9 @@ execute_builtin_or_function (words, builtin, var, redirects,
+   nfifo = num_fifos ();
+   if (nfifo > ofifo)
+     close_new_fifos (ofifo_list, osize);
+-  free (ofifo_list);
++  if (ofifo_list)
++    free (ofifo_list);
++  discard_unwind_frame ("saved_fifos");
+ #endif
+ 
+   return (result);
+diff --git a/patchlevel.h b/patchlevel.h
+index 779671cd..09a3cc84 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 13
++#define PATCHLEVEL 14
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-15.patch b/SOURCES/bash-4.4-patch-15.patch
new file mode 100644
index 0000000..7d1dccf
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-15.patch
@@ -0,0 +1,38 @@
+From 9cce630e80008e74fa9a1d9408367341caf363f2 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:04:01 -0500
+Subject: [PATCH] Bash-4.4 patch 15
+
+---
+ patchlevel.h | 2 +-
+ subst.c      | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/patchlevel.h b/patchlevel.h
+index 09a3cc84..6e9ed3fc 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 14
++#define PATCHLEVEL 15
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/subst.c b/subst.c
+index dbf0157e..fc00cab0 100644
+--- a/subst.c
++++ b/subst.c
+@@ -5906,6 +5906,8 @@ process_substitute (string, open_for_read_in_child)
+      parent. */
+   expanding_redir = 0;
+ 
++  remove_quoted_escapes (string);
++
+   subshell_level++;
+   result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
+   subshell_level--;
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-16.patch b/SOURCES/bash-4.4-patch-16.patch
new file mode 100644
index 0000000..752b034
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-16.patch
@@ -0,0 +1,68 @@
+From c9f1b04651dae16e33f0aa8974c5122e26b362ae Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:04:20 -0500
+Subject: [PATCH] Bash-4.4 patch 16
+
+---
+ lib/sh/zread.c | 23 +++++++++--------------
+ patchlevel.h   |  2 +-
+ 2 files changed, 10 insertions(+), 15 deletions(-)
+
+diff --git a/lib/sh/zread.c b/lib/sh/zread.c
+index 868f9705..496f20b8 100644
+--- a/lib/sh/zread.c
++++ b/lib/sh/zread.c
+@@ -37,7 +37,10 @@ extern int errno;
+ #  define SEEK_CUR 1
+ #endif
+ 
++extern int executing_builtin;
++
+ extern void check_signals_and_traps (void);
++extern void check_signals (void);
+ extern int signal_is_trapped (int);
+ 
+ /* Read LEN bytes from FD into BUF.  Retry the read on EINTR.  Any other
+@@ -50,21 +53,13 @@ zread (fd, buf, len)
+ {
+   ssize_t r;
+ 
+-#if 0
+-#if defined (HAVE_SIGINTERRUPT)
+-  if (signal_is_trapped (SIGCHLD))
+-    siginterrupt (SIGCHLD, 1);
+-#endif
+-#endif
+-
+   while ((r = read (fd, buf, len)) < 0 && errno == EINTR)
+-    check_signals_and_traps ();	/* XXX - should it be check_signals()? */
+-
+-#if 0 
+-#if defined (HAVE_SIGINTERRUPT)
+-  siginterrupt (SIGCHLD, 0);
+-#endif
+-#endif
++    /* XXX - bash-5.0 */
++    /* We check executing_builtin and run traps here for backwards compatibility */
++    if (executing_builtin)
++      check_signals_and_traps ();	/* XXX - should it be check_signals()? */
++    else
++      check_signals ();
+ 
+   return r;
+ }
+diff --git a/patchlevel.h b/patchlevel.h
+index 6e9ed3fc..9074f4dd 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 15
++#define PATCHLEVEL 16
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-17.patch b/SOURCES/bash-4.4-patch-17.patch
new file mode 100644
index 0000000..ac3eac8
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-17.patch
@@ -0,0 +1,41 @@
+From b3a5ec8dd510a68dc850f3f516c0cf9afd87451f Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:04:37 -0500
+Subject: [PATCH] Bash-4.4 patch 17
+
+---
+ builtins/read.def | 5 +++++
+ patchlevel.h      | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/builtins/read.def b/builtins/read.def
+index 33821f3f..803bea35 100644
+--- a/builtins/read.def
++++ b/builtins/read.def
+@@ -690,6 +690,11 @@ add_char:
+   input_string[i] = '\0';
+   CHECK_ALRM;
+ 
++#if defined (READLINE)
++  if (edit)
++    free (rlbuf);
++#endif
++
+   if (retval < 0)
+     {
+       t_errno = errno;
+diff --git a/patchlevel.h b/patchlevel.h
+index 9074f4dd..98e714da 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 16
++#define PATCHLEVEL 17
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-18.patch b/SOURCES/bash-4.4-patch-18.patch
new file mode 100644
index 0000000..853a9e3
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-18.patch
@@ -0,0 +1,38 @@
+From eb78197af36bb0fb95493ebf8fce104be6832ec9 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 29 Jan 2018 16:04:56 -0500
+Subject: [PATCH] Bash-4.4 patch 18
+
+---
+ builtins/read.def | 2 +-
+ patchlevel.h      | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/builtins/read.def b/builtins/read.def
+index 803bea35..b54b3af6 100644
+--- a/builtins/read.def
++++ b/builtins/read.def
+@@ -610,7 +610,7 @@ read_builtin (list)
+ 	}
+ 
+       CHECK_ALRM;
+-
++      QUIT;		/* in case we didn't call check_signals() */
+ #if defined (READLINE)
+ 	}
+ #endif
+diff --git a/patchlevel.h b/patchlevel.h
+index 98e714da..f0ee56e4 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 17
++#define PATCHLEVEL 18
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-19.patch b/SOURCES/bash-4.4-patch-19.patch
new file mode 100644
index 0000000..35e6606
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-19.patch
@@ -0,0 +1,40 @@
+From b0776d8c49ab4310fa056ce1033985996c5b9807 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Tue, 6 Feb 2018 16:22:34 -0500
+Subject: [PATCH] Bash-4.4 patch 19
+
+---
+ lib/readline/display.c | 4 +++-
+ patchlevel.h           | 2 +-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/lib/readline/display.c b/lib/readline/display.c
+index 41fb0531..2d2e768a 100644
+--- a/lib/readline/display.c
++++ b/lib/readline/display.c
+@@ -771,7 +771,9 @@ rl_redisplay ()
+ 	 appear in the first and last lines of the prompt */
+       wadjust = (newlines == 0)
+ 		  ? prompt_invis_chars_first_line
+-		  : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line);
++		  : ((newlines == prompt_lines_estimate)
++		  	? (wrap_offset - prompt_invis_chars_first_line)
++		  	: 0);
+ 
+       /* fix from Darin Johnson <darin@acuson.com> for prompt string with
+          invisible characters that is longer than the screen width.  The
+diff --git a/patchlevel.h b/patchlevel.h
+index f0ee56e4..a711c495 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 18
++#define PATCHLEVEL 19
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.13.6
+
diff --git a/SOURCES/bash-4.4-patch-2.patch b/SOURCES/bash-4.4-patch-2.patch
new file mode 100644
index 0000000..373a92d
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-2.patch
@@ -0,0 +1,59 @@
+From 280bd77d8d3e7f7c90c9fa07de3d1e8f8e18ac29 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 14 Nov 2016 14:27:06 -0500
+Subject: [PATCH] Bash-4.4 patch 2
+
+---
+ patchlevel.h | 2 +-
+ subst.c      | 9 ++++++++-
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/patchlevel.h b/patchlevel.h
+index 40db1a3..a988d85 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 1
++#define PATCHLEVEL 2
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/subst.c b/subst.c
+index f1a4df1..4d498ef 100644
+--- a/subst.c
++++ b/subst.c
+@@ -5931,6 +5931,7 @@ read_comsub (fd, quoted, rflag)
+   char *istring, buf[128], *bufp, *s;
+   int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
+   ssize_t bufn;
++  int nullbyte;
+ 
+   istring = (char *)NULL;
+   istring_index = istring_size = bufn = tflag = 0;
+@@ -5938,6 +5939,8 @@ read_comsub (fd, quoted, rflag)
+   for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
+     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. */
+   while (1)
+@@ -5956,7 +5959,11 @@ read_comsub (fd, quoted, rflag)
+       if (c == 0)
+ 	{
+ #if 1
+-	  internal_warning ("%s", _("command substitution: ignored null byte in input"));
++	  if (nullbyte == 0)
++	    {
++	      internal_warning ("%s", _("command substitution: ignored null byte in input"));
++	      nullbyte = 1;
++	    }
+ #endif
+ 	  continue;
+ 	}
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-3.patch b/SOURCES/bash-4.4-patch-3.patch
new file mode 100644
index 0000000..30b81cb
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-3.patch
@@ -0,0 +1,52 @@
+From 4f59a8babc53a9f975078c4a003bdc8831c5ee22 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 14 Nov 2016 14:27:23 -0500
+Subject: [PATCH] Bash-4.4 patch 3
+
+---
+ lib/glob/sm_loop.c | 9 +++++++++
+ patchlevel.h       | 2 +-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c
+index c3a2aa3..65179e2 100644
+--- a/lib/glob/sm_loop.c
++++ b/lib/glob/sm_loop.c
+@@ -330,6 +330,12 @@ PARSE_COLLSYM (p, vp)
+   for (pc = 0; p[pc]; pc++)
+     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)
+      *vp = val;
+@@ -483,6 +489,9 @@ BRACKMATCH (p, test, flags)
+       c = *p++;
+       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.  */
+ 	return (CHAR *)0;
+diff --git a/patchlevel.h b/patchlevel.h
+index a988d85..e7e960c 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-4.patch b/SOURCES/bash-4.4-patch-4.patch
new file mode 100644
index 0000000..f397be6
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-4.patch
@@ -0,0 +1,81 @@
+From 2965eca924466a48c5597ac5c6c86d470e718908 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 14 Nov 2016 14:27:35 -0500
+Subject: [PATCH] Bash-4.4 patch 4
+
+---
+ jobs.c       | 15 +++++++++++++++
+ jobs.h       |  1 +
+ patchlevel.h |  2 +-
+ subst.c      |  5 +----
+ 4 files changed, 18 insertions(+), 5 deletions(-)
+
+diff --git a/jobs.c b/jobs.c
+index cef3c79..fc96603 100644
+--- a/jobs.c
++++ b/jobs.c
+@@ -453,6 +453,21 @@ cleanup_the_pipeline ()
+     discard_pipeline (disposer);
+ }
+ 
++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 ()
+ {
+diff --git a/jobs.h b/jobs.h
+index 4ba3513..6df0607 100644
+--- a/jobs.h
++++ b/jobs.h
+@@ -190,6 +190,7 @@ extern JOB **jobs;
+ extern void making_children __P((void));
+ 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));
+ extern void start_pipeline __P((void));
+diff --git a/patchlevel.h b/patchlevel.h
+index e7e960c..c059f0b 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/subst.c b/subst.c
+index 4d498ef..298187d 100644
+--- a/subst.c
++++ b/subst.c
+@@ -5808,10 +5808,7 @@ process_substitute (string, open_for_read_in_child)
+     {
+ #if defined (JOB_CONTROL)
+       if (last_procsub_child)
+-	{
+-	  discard_pipeline (last_procsub_child);
+-	  last_procsub_child = (PROCESS *)NULL;
+-	}
++	discard_last_procsub_child ();
+       last_procsub_child = restore_pipeline (0);
+ #endif
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-5.patch b/SOURCES/bash-4.4-patch-5.patch
new file mode 100644
index 0000000..03b9761
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-5.patch
@@ -0,0 +1,42 @@
+From f459cbd8be37b28be1dc90315e0ab51d7f211301 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 14 Nov 2016 14:27:55 -0500
+Subject: [PATCH] Bash-4.4 patch 5
+
+---
+ builtins/evalstring.c | 3 ---
+ patchlevel.h          | 2 +-
+ 2 files changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/builtins/evalstring.c b/builtins/evalstring.c
+index e221591..6dc756c 100644
+--- a/builtins/evalstring.c
++++ b/builtins/evalstring.c
+@@ -104,12 +104,9 @@ should_suppress_fork (command)
+ 	  running_trap == 0 &&
+ 	  *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) &&
+ 	  ((command->flags & CMD_INVERT_RETURN) == 0));
+diff --git a/patchlevel.h b/patchlevel.h
+index c059f0b..1bc098b 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 4
++#define PATCHLEVEL 5
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-6.patch b/SOURCES/bash-4.4-patch-6.patch
new file mode 100644
index 0000000..a6e3551
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-6.patch
@@ -0,0 +1,50 @@
+From 44bfefc553993613c0aff992bc4f3078d738ee1d Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 11:47:31 -0500
+Subject: [PATCH] Bash-4.4 patch 6
+
+---
+ builtins/pushd.def | 7 ++++++-
+ patchlevel.h       | 2 +-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/builtins/pushd.def b/builtins/pushd.def
+index 82653c4..6579e4c 100644
+--- a/builtins/pushd.def
++++ b/builtins/pushd.def
+@@ -365,7 +365,7 @@ popd_builtin (list)
+ 	break;
+     }
+ 
+-  if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
++  if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
+     {
+       pushd_error (directory_list_offset, which_word ? which_word : "");
+       return (EXECUTION_FAILURE);
+@@ -387,6 +387,11 @@ popd_builtin (list)
+ 	 remove that directory from the list and shift the remainder
+ 	 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--;
+ 
+diff --git a/patchlevel.h b/patchlevel.h
+index 1bc098b..14bff9f 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 5
++#define PATCHLEVEL 6
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-7.patch b/SOURCES/bash-4.4-patch-7.patch
new file mode 100644
index 0000000..2db3d82
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-7.patch
@@ -0,0 +1,114 @@
+From 4f747edc625815f449048579f6e65869914dd715 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 11:47:55 -0500
+Subject: [PATCH] Bash-4.4 patch 7
+
+---
+ bashline.c   | 22 ++++++++++++----------
+ patchlevel.h |  2 +-
+ subst.c      |  4 ++++
+ 3 files changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/bashline.c b/bashline.c
+index f4fe9f1..0275844 100644
+--- a/bashline.c
++++ b/bashline.c
+@@ -142,7 +142,7 @@ static int executable_completion __P((const char *, int));
+ static rl_icppfunc_t *save_directory_hook __P((void));
+ static void restore_directory_hook __P((rl_icppfunc_t));
+ 
+-static int directory_exists __P((const char *));
++static int directory_exists __P((const char *, int));
+ 
+ static void cleanup_expansion_error __P((void));
+ static void maybe_make_readline_line __P((char *));
+@@ -3102,18 +3102,20 @@ restore_directory_hook (hookf)
+     rl_directory_rewrite_hook = hookf;
+ }
+ 
+-/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash
+-   removed, exists. */
++/* 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)
++directory_exists (dirname, should_dequote)
+      const char *dirname;
++     int should_dequote;
+ {
+   char *new_dirname;
+   int dirlen, r;
+   struct stat sb;
+ 
+-  /* First, dequote the directory name */
+-  new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character);
++  /* 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] == '/')
+     new_dirname[dirlen - 1] = '\0';
+@@ -3145,7 +3147,7 @@ bash_filename_stat_hook (dirname)
+   else if (t = mbschr (local_dirname, '`'))	/* XXX */
+     should_expand_dirname = '`';
+ 
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 0))
+     should_expand_dirname = 0;
+   
+   if (should_expand_dirname)  
+@@ -3155,7 +3157,7 @@ bash_filename_stat_hook (dirname)
+ 	 have to worry about restoring this setting. */
+       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 */
++      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)
+ 	{
+@@ -3244,13 +3246,13 @@ bash_directory_completion_hook (dirname)
+ 	should_expand_dirname = '`';
+     }
+ 
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 1))
+     should_expand_dirname = 0;
+ 
+   if (should_expand_dirname)  
+     {
+       new_dirname = savestring (local_dirname);
+-      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);	/* does the right thing */
++      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);	/* does the right thing */
+       if (wl)
+ 	{
+ 	  *dirname = string_list (wl);
+diff --git a/patchlevel.h b/patchlevel.h
+index 14bff9f..deb9c5b 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 6
++#define PATCHLEVEL 7
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff --git a/subst.c b/subst.c
+index 298187d..027a13e 100644
+--- a/subst.c
++++ b/subst.c
+@@ -9458,6 +9458,10 @@ add_twochars:
+ 		tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS);	/* affects $@ */
+ 	      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;
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-8.patch b/SOURCES/bash-4.4-patch-8.patch
new file mode 100644
index 0000000..fc435f9
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-8.patch
@@ -0,0 +1,71 @@
+From b9f81c2977b82490cd4dc70b0bb292bfbf86bd2c Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 15:38:10 -0500
+Subject: [PATCH] Bash-4.4 patch 8
+
+---
+ expr.c       | 15 +++++++++------
+ patchlevel.h |  2 +-
+ 2 files changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/expr.c b/expr.c
+index 1ddb693..172964a 100644
+--- a/expr.c
++++ b/expr.c
+@@ -578,24 +578,23 @@ expcond ()
+   rval = cval = explor ();
+   if (curtok == QUES)		/* found conditional expr */
+     {
+-      readtok ();
+-      if (curtok == 0 || curtok == COL)
+-	evalerror (_("expression expected"));
+       if (cval == 0)
+ 	{
+ 	  set_noeval = 1;
+ 	  noeval++;
+ 	}
+ 
++      readtok ();
++      if (curtok == 0 || curtok == COL)
++	evalerror (_("expression expected"));
++
+       val1 = EXP_HIGHEST ();
+ 
+       if (set_noeval)
+ 	noeval--;
+       if (curtok != COL)
+ 	evalerror (_("`:' expected for conditional expression"));
+-      readtok ();
+-      if (curtok == 0)
+-	evalerror (_("expression expected"));
++
+       set_noeval = 0;
+       if (cval)
+  	{
+@@ -603,7 +602,11 @@ expcond ()
+ 	  noeval++;
+  	}
+ 
++      readtok ();
++      if (curtok == 0)
++	evalerror (_("expression expected"));
+       val2 = expcond ();
++
+       if (set_noeval)
+ 	noeval--;
+       rval = cval ? val1 : val2;
+diff --git a/patchlevel.h b/patchlevel.h
+index deb9c5b..16c8740 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 7
++#define PATCHLEVEL 8
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-patch-9.patch b/SOURCES/bash-4.4-patch-9.patch
new file mode 100644
index 0000000..b759e01
--- /dev/null
+++ b/SOURCES/bash-4.4-patch-9.patch
@@ -0,0 +1,80 @@
+From e59fb114e9c0436890d110cfdda4d794a63496e7 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Fri, 20 Jan 2017 15:38:29 -0500
+Subject: [PATCH] Bash-4.4 patch 9
+
+---
+ lib/readline/history.c | 16 +++++++---------
+ patchlevel.h           |  2 +-
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/lib/readline/history.c b/lib/readline/history.c
+index 9ff25a7..129c57a 100644
+--- a/lib/readline/history.c
++++ b/lib/readline/history.c
+@@ -279,6 +279,7 @@ add_history (string)
+      const char *string;
+ {
+   HIST_ENTRY *temp;
++  int new_length;
+ 
+   if (history_stifled && (history_length == history_max_entries))
+     {
+@@ -295,13 +296,9 @@ add_history (string)
+ 
+       /* 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
+ 
++      new_length = history_length;
+       history_base++;
+     }
+   else
+@@ -315,7 +312,7 @@ add_history (string)
+ 	  else
+ 	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+ 	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+-	  history_length = 1;
++	  new_length = 1;
+ 	}
+       else
+ 	{
+@@ -325,14 +322,15 @@ add_history (string)
+ 	      the_history = (HIST_ENTRY **)
+ 		xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
+ 	    }
+-	  history_length++;
++	  new_length = history_length + 1;
+ 	}
+     }
+ 
+   temp = alloc_history_entry ((char *)string, hist_inittime ());
+ 
+-  the_history[history_length] = (HIST_ENTRY *)NULL;
+-  the_history[history_length - 1] = temp;
++  the_history[new_length] = (HIST_ENTRY *)NULL;
++  the_history[new_length - 1] = temp;
++  history_length = new_length;
+ }
+ 
+ /* Change the time stamp of the most recent history entry to STRING. */
+diff --git a/patchlevel.h b/patchlevel.h
+index 16c8740..02f1d60 100644
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 8
++#define PATCHLEVEL 9
+ 
+ #endif /* _PATCHLEVEL_H_ */
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.4-unset-nonblock-stdin.patch b/SOURCES/bash-4.4-unset-nonblock-stdin.patch
new file mode 100644
index 0000000..68ad38c
--- /dev/null
+++ b/SOURCES/bash-4.4-unset-nonblock-stdin.patch
@@ -0,0 +1,11 @@
+diff --git a/parse.y b/parse.y
+index 85f1c4f..9d1cdf8 100644
+--- a/parse.y
++++ b/parse.y
+@@ -1453,6 +1453,7 @@ yy_readline_get ()
+ 	  old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
+ 	}
+ 
++      sh_unset_nodelay_mode (fileno (rl_instream));	/* just in case */
+       current_readline_line = readline (current_readline_prompt ?
+       					  current_readline_prompt : "");
diff --git a/SOURCES/bash-4.5-test-modification-time.patch b/SOURCES/bash-4.5-test-modification-time.patch
new file mode 100644
index 0000000..275bbed
--- /dev/null
+++ b/SOURCES/bash-4.5-test-modification-time.patch
@@ -0,0 +1,11 @@
+diff --git a/config.h.in b/config.h.in
+--- a/config.h.in
++++ b/config.h.in
+@@ -449,6 +449,7 @@
+ #undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
+ #undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC
+ 
++#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+ #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
+ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
+ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC
diff --git a/SOURCES/bash-infotags.patch b/SOURCES/bash-infotags.patch
new file mode 100644
index 0000000..fe39609
--- /dev/null
+++ b/SOURCES/bash-infotags.patch
@@ -0,0 +1,26 @@
+diff --git a/doc/Makefile.in b/doc/Makefile.in
+index 5f0756c..a5fa5a0 100644
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -74,7 +74,6 @@ TEXI2DVI    = ${SUPPORT_SRCDIR}/texi2dvi
+ TEXI2HTML   = ${SUPPORT_SRCDIR}/texi2html
+ MAN2HTML    = ${BUILD_DIR}/support/man2html
+ HTMLPOST    = ${srcdir}/htmlpost.sh
+-INFOPOST    = ${srcdir}/infopost.sh
+ QUIETPS	    = #set this to -q to shut up dvips
+ PAPERSIZE   = letter	# change to a4 for A4-size paper
+ PSDPI       = 600	# could be 300 if you like
+@@ -188,8 +187,8 @@ bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ 	$(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
+ 
+-bash.info: bashref.info
+-	${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
++bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
++	$(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@
+ 
+ bash.txt: bash.1
+ bash.ps: bash.1
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-requires.patch b/SOURCES/bash-requires.patch
new file mode 100644
index 0000000..2766431
--- /dev/null
+++ b/SOURCES/bash-requires.patch
@@ -0,0 +1,325 @@
+diff --git a/builtins.h b/builtins.h
+index 0cfea18..a6ef958 100644
+--- a/builtins.h
++++ b/builtins.h
+@@ -42,6 +42,7 @@
+ #define ASSIGNMENT_BUILTIN 0x10	/* This builtin takes assignment statements. */
+ #define POSIX_BUILTIN	0x20	/* This builtins is special in the Posix command search order. */
+ #define LOCALVAR_BUILTIN   0x40	/* This builtin creates local variables */
++#define REQUIRES_BUILTIN 0x80  /* This builtin requires other files. */
+ 
+ #define BASE_INDENT	4
+ 
+diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c
+index 4f51201..283bfea 100644
+--- a/builtins/mkbuiltins.c
++++ b/builtins/mkbuiltins.c
+@@ -69,10 +69,15 @@ extern char *strcpy ();
+ #define whitespace(c) (((c) == ' ') || ((c) == '\t'))
+ 
+ /* Flag values that builtins can have. */
++/*  These flags are for the C code generator, 
++    the C which is produced (./builtin.c)
++    includes the flags definitions found 
++    in ../builtins.h */
+ #define BUILTIN_FLAG_SPECIAL	0x01
+ #define BUILTIN_FLAG_ASSIGNMENT 0x02
+ #define BUILTIN_FLAG_LOCALVAR	0x04
+ #define BUILTIN_FLAG_POSIX_BUILTIN 0x08
++#define BUILTIN_FLAG_REQUIRES  0x10
+ 
+ #define BASE_INDENT	4
+ 
+@@ -173,11 +178,20 @@ char *posix_builtins[] =
+   (char *)NULL
+ };
+ 
++/* The builtin commands that cause requirements on other files. */
++static char *requires_builtins[] =
++{
++  ".", "command", "exec", "source", "inlib",
++  (char *)NULL
++};
++
++
+ /* Forward declarations. */
+ static int is_special_builtin ();
+ static int is_assignment_builtin ();
+ static int is_localvar_builtin ();
+ static int is_posix_builtin ();
++static int is_requires_builtin ();
+ 
+ #if !defined (HAVE_RENAME)
+ static int rename ();
+@@ -831,6 +845,9 @@ builtin_handler (self, defs, arg)
+     new->flags |= BUILTIN_FLAG_LOCALVAR;
+   if (is_posix_builtin (name))
+     new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
++  if (is_requires_builtin (name))
++    new->flags |= BUILTIN_FLAG_REQUIRES;
++
+ 
+   array_add ((char *)new, defs->builtins);
+   building_builtin = 1;
+@@ -1250,12 +1267,13 @@ write_builtins (defs, structfile, externfile)
+ 		  else
+ 		    fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
+ 
+-		  fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
++		  fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n",
+ 		    "BUILTIN_ENABLED | STATIC_BUILTIN",
+ 		    (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
+ 		    (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
+ 		    (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "",
+ 		    (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
++		    (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
+ 		    document_name (builtin));
+ 
+ 		  /* Don't translate short document summaries that are identical
+@@ -1645,6 +1663,13 @@ is_posix_builtin (name)
+   return (_find_in_table (name, posix_builtins));
+ }
+ 
++static int
++is_requires_builtin (name)
++     char *name;
++{
++  return (_find_in_table (name, requires_builtins));
++}
++
+ #if !defined (HAVE_RENAME)
+ static int
+ rename (from, to)
+diff --git a/doc/bash.1 b/doc/bash.1
+index c21e877..04ce845 100644
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -238,6 +238,14 @@ The shell becomes restricted (see
+ .B "RESTRICTED SHELL"
+ below).
+ .TP
++.B \-\-rpm-requires
++Produce the list of files that are required for the 
++shell script to run.  This implies '-n' and is subject
++to the same limitations as compile time error checking checking;
++Command substitutions, Conditional expressions and
++.BR eval
++builtin are not parsed so some dependencies may be missed.
++.TP
+ .B \-\-verbose
+ Equivalent to \fB\-v\fP.
+ .TP
+diff --git a/doc/bashref.texi b/doc/bashref.texi
+index 06957b6..e3fe925 100644
+--- a/doc/bashref.texi
++++ b/doc/bashref.texi
+@@ -6243,6 +6243,13 @@ standard.  @xref{Bash POSIX Mode}, for a description of the Bash
+ @item --restricted
+ Make the shell a restricted shell (@pxref{The Restricted Shell}).
+ 
++@item --rpm-requires
++Produce the list of files that are required for the 
++shell script to run.  This implies '-n' and is subject
++to the same limitations as compile time error checking checking;
++Command substitutions, Conditional expressions and @command{eval}
++are not parsed so some dependencies may be missed.
++
+ @item --verbose
+ Equivalent to @option{-v}.  Print shell input lines as they're read.
+ 
+diff --git a/eval.c b/eval.c
+index db863e7..5a5af32 100644
+--- a/eval.c
++++ b/eval.c
+@@ -56,6 +56,7 @@ extern int need_here_doc;
+ extern int current_command_number, current_command_line_count, line_number;
+ extern int expand_aliases;
+ extern char *ps0_prompt;
++extern int rpm_requires;
+ 
+ #if defined (HAVE_POSIX_SIGNALS)
+ extern sigset_t top_level_mask;
+@@ -148,7 +149,7 @@ reader_loop ()
+ 
+       if (read_command () == 0)
+ 	{
+-	  if (interactive_shell == 0 && read_but_dont_execute)
++	  if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires))
+ 	    {
+ 	      last_command_exit_value = EXECUTION_SUCCESS;
+ 	      dispose_command (global_command);
+diff --git a/execute_cmd.c b/execute_cmd.c
+index b5cd405..88c7a5c 100644
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -533,6 +533,8 @@ async_redirect_stdin ()
+ 
+ #define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
+ 
++extern int rpm_requires;
++
+ /* Execute the command passed in COMMAND, perhaps doing it asynchronously.
+    COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
+    ASYNCHROUNOUS, if non-zero, says to do this command in the background.
+@@ -565,7 +567,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+ 
+   if (breaking || continuing)
+     return (last_command_exit_value);
+-  if (command == 0 || read_but_dont_execute)
++  if (command == 0 || (read_but_dont_execute && !rpm_requires))
++    return (EXECUTION_SUCCESS);
++  if (rpm_requires && command->type == cm_function_def)
++    return last_command_exit_value =
++      execute_intern_function (command->value.Function_def->name,
++                              command->value.Function_def);
++  if (read_but_dont_execute)
+     return (EXECUTION_SUCCESS);
+ 
+   QUIT;
+@@ -5752,7 +5760,7 @@ execute_intern_function (name, funcdef)
+ 
+   if (check_identifier (name, posixly_correct) == 0)
+     {
+-      if (posixly_correct && interactive_shell == 0)
++      if (posixly_correct && interactive_shell == 0 && rpm_requires == 0)
+ 	{
+ 	  last_command_exit_value = EX_BADUSAGE;
+ 	  jump_to_top_level (ERREXIT);
+diff --git a/execute_cmd.h b/execute_cmd.h
+index 62bec82..d42dc85 100644
+--- a/execute_cmd.h
++++ b/execute_cmd.h
+@@ -22,6 +22,8 @@
+ #define _EXECUTE_CMD_H_
+ 
+ #include "stdc.h"
++#include "variables.h"
++#include "command.h"
+ 
+ #if defined (ARRAY_VARS)
+ struct func_array_state
+diff --git a/make_cmd.c b/make_cmd.c
+index b42e9ff..a982fe0 100644
+--- a/make_cmd.c
++++ b/make_cmd.c
+@@ -42,11 +42,15 @@
+ #include "flags.h"
+ #include "make_cmd.h"
+ #include "dispose_cmd.h"
++#include "execute_cmd.h"
+ #include "variables.h"
+ #include "subst.h"
+ #include "input.h"
+ #include "ocache.h"
+ #include "externs.h"
++#include "builtins.h"
++
++#include "builtins/common.h"
+ 
+ #if defined (JOB_CONTROL)
+ #include "jobs.h"
+@@ -57,6 +61,10 @@
+ extern int line_number, current_command_line_count, parser_state;
+ extern int last_command_exit_value;
+ extern int shell_initialized;
++extern int rpm_requires;
++
++static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz"
++                     "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ 
+ int here_doc_first_line = 0;
+ 
+@@ -839,6 +847,27 @@ make_coproc_command (name, command)
+   return (make_command (cm_coproc, (SIMPLE_COM *)temp));
+ }
+ 
++static void
++output_requirement (deptype, filename)
++const char *deptype;
++char *filename;
++{
++  if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/')))
++    return;
++
++  /* 
++      if the executable is called via variable substitution we can
++      not dermine what it is at compile time.  
++
++      if the executable consists only of characters not in the
++      alphabet we do not consider it a dependency just an artifact
++      of shell parsing (ex "exec < ${infile}").
++  */
++
++  if (strpbrk(filename, alphabet_set))
++    printf ("%s(%s)\n", deptype, filename);
++}
++
+ /* Reverse the word list and redirection list in the simple command
+    has just been parsed.  It seems simpler to do this here the one
+    time then by any other method that I can think of. */
+@@ -856,6 +885,27 @@ clean_simple_command (command)
+ 	REVERSE_LIST (command->value.Simple->redirects, REDIRECT *);
+     }
+ 
++  if (rpm_requires && command->value.Simple->words)
++    {
++      char *cmd0;
++      char *cmd1;
++      struct builtin *b;
++
++      cmd0 = command->value.Simple->words->word->word;
++      b = builtin_address_internal (cmd0, 0);
++      cmd1 = 0;
++      if (command->value.Simple->words->next)
++        cmd1 = command->value.Simple->words->next->word->word;
++
++      if (b) {
++        if ( (b->flags & REQUIRES_BUILTIN) && cmd1)
++          output_requirement ("executable", cmd1);
++      } else {
++        if (!assignment(cmd0, 0))
++          output_requirement (find_function(cmd0) ? "function" : "executable", cmd0);
++      }
++    } /*rpm_requires*/
++
+   parser_state &= ~PST_REDIRLIST;
+   return (command);
+ }
+diff --git a/shell.c b/shell.c
+index 7f63969..a0fb7ce 100644
+--- a/shell.c
++++ b/shell.c
+@@ -201,6 +201,9 @@ int have_devfd = 0;
+ /* The name of the .(shell)rc file. */
+ static char *bashrc_file = DEFAULT_BASHRC;
+ 
++/* Non-zero if we are finding the scripts requirements. */
++int rpm_requires;
++
+ /* Non-zero means to act more like the Bourne shell on startup. */
+ static int act_like_sh;
+ 
+@@ -264,6 +267,7 @@ static const struct {
+   { "protected", Int, &protected_mode, (char **)0x0 },
+ #endif
+   { "rcfile", Charp, (int *)0x0, &bashrc_file },
++  { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
+ #if defined (RESTRICTED_SHELL)
+   { "restricted", Int, &restricted, (char **)0x0 },
+ #endif
+@@ -500,6 +504,12 @@ main (argc, argv, env)
+   if (dump_translatable_strings)
+     read_but_dont_execute = 1;
+ 
++  if (rpm_requires)
++    {
++      read_but_dont_execute = 1;
++      initialize_shell_builtins ();
++    }
++
+   if (running_setuid && privileged_mode == 0)
+     disable_priv_mode ();
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-setlocale.patch b/SOURCES/bash-setlocale.patch
new file mode 100644
index 0000000..f068ec7
--- /dev/null
+++ b/SOURCES/bash-setlocale.patch
@@ -0,0 +1,10 @@
+--- bash-3.0/builtins/setattr.def.setlocale	2005-08-08 12:22:42.000000000 +0100
++++ bash-3.0/builtins/setattr.def	2005-08-08 12:25:16.000000000 +0100
+@@ -423,4 +423,7 @@
+ 
+   if (var && (exported_p (var) || (attribute & att_exported)))
+     array_needs_making++;	/* XXX */
++
++  if (var)
++    stupidly_hack_special_variables (name);
+ }
diff --git a/SOURCES/bash-tty-tests.patch b/SOURCES/bash-tty-tests.patch
new file mode 100644
index 0000000..83569b1
--- /dev/null
+++ b/SOURCES/bash-tty-tests.patch
@@ -0,0 +1,61 @@
+diff --git a/tests/exec.right b/tests/exec.right
+index 81224fa..ff77f09 100644
+--- a/tests/exec.right
++++ b/tests/exec.right
+@@ -51,7 +51,6 @@ this is ohio-state
+ 0
+ 1
+ testb
+-expand_aliases 	on
+ 1
+ 1
+ 1
+diff --git a/tests/execscript b/tests/execscript
+index 3415ae3..75c48a4 100644
+--- a/tests/execscript
++++ b/tests/execscript
+@@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub
+ # checks for properly deciding what constitutes an executable file
+ ${THIS_SH} ./exec7.sub
+ 
+-${THIS_SH} -i ./exec8.sub
+-
+ ${THIS_SH} ./exec9.sub
+ 
+ ${THIS_SH} ./exec10.sub
+diff --git a/tests/read.right b/tests/read.right
+index 73cb704..a92fe7f 100644
+--- a/tests/read.right
++++ b/tests/read.right
+@@ -33,14 +33,6 @@ a = abcdefg
+ a = xyz
+ a = -xyz 123-
+ a = abc
+-timeout 1: ok
+-
+-timeout 2: ok
+-
+-./read2.sub: line 23: read: -3: invalid timeout specification
+-1
+-
+-abcde
+ ./read3.sub: line 4: read: -1: invalid number
+ abc
+ ab
+diff --git a/tests/read.tests b/tests/read.tests
+index fe27dae..10346f7 100644
+--- a/tests/read.tests
++++ b/tests/read.tests
+@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; }
+ # test read -d delim behavior
+ ${THIS_SH} ./read1.sub
+ 
+-# test read -t timeout behavior
+-${THIS_SH} ./read2.sub
+-
+ # test read -n nchars behavior
+ ${THIS_SH} ./read3.sub
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/dot-bash_logout b/SOURCES/dot-bash_logout
new file mode 100644
index 0000000..af7c6fd
--- /dev/null
+++ b/SOURCES/dot-bash_logout
@@ -0,0 +1,2 @@
+# ~/.bash_logout
+
diff --git a/SOURCES/dot-bash_profile b/SOURCES/dot-bash_profile
new file mode 100644
index 0000000..55136b9
--- /dev/null
+++ b/SOURCES/dot-bash_profile
@@ -0,0 +1,8 @@
+# .bash_profile
+
+# Get the aliases and functions
+if [ -f ~/.bashrc ]; then
+	. ~/.bashrc
+fi
+
+# User specific environment and startup programs
diff --git a/SOURCES/dot-bashrc b/SOURCES/dot-bashrc
new file mode 100644
index 0000000..68854a1
--- /dev/null
+++ b/SOURCES/dot-bashrc
@@ -0,0 +1,15 @@
+# .bashrc
+
+# Source global definitions
+if [ -f /etc/bashrc ]; then
+	. /etc/bashrc
+fi
+
+# User specific environment
+PATH="$HOME/.local/bin:$HOME/bin:$PATH"
+export PATH
+
+# Uncomment the following line if you don't like systemctl's auto-paging feature:
+# export SYSTEMD_PAGER=
+
+# User specific aliases and functions
diff --git a/SPECS/bash.spec b/SPECS/bash.spec
new file mode 100644
index 0000000..7e3549a
--- /dev/null
+++ b/SPECS/bash.spec
@@ -0,0 +1,1667 @@
+#% define beta_tag rc2
+%global _hardened_build 1
+%define patchleveltag .19
+%define baseversion 4.4
+%bcond_without tests
+
+Version: %{baseversion}%{patchleveltag}
+Name: bash
+Summary: The GNU Bourne Again shell
+Release: 7%{?dist}
+License: GPLv3+
+Url: https://www.gnu.org/software/bash
+Source0: https://ftp.gnu.org/gnu/bash/bash-%{baseversion}.tar.gz
+
+# For now there isn't any doc
+#Source2: ftp://ftp.gnu.org/gnu/bash/bash-doc-%{version}.tar.gz
+
+Source1: dot-bashrc
+Source2: dot-bash_profile
+Source3: dot-bash_logout
+
+# Official upstream patches
+# Patches are converted to apply with '-p1'
+%{lua:for i=1,19 do print(string.format("Patch%u: bash-4.4-patch-%u.patch\n", i, i)) end}
+
+# Other patches
+Patch101: bash-2.02-security.patch
+Patch102: bash-2.03-paths.patch
+Patch103: bash-2.03-profile.patch
+Patch104: bash-2.05a-interpreter.patch
+Patch105: bash-2.05b-debuginfo.patch
+Patch106: bash-2.05b-manso.patch
+Patch107: bash-2.05b-pgrp_sync.patch
+Patch108: bash-2.05b-xcc.patch
+Patch109: bash-3.2-audit.patch
+Patch110: bash-3.2-ssh_source_bash.patch
+Patch112: bash-infotags.patch
+Patch113: bash-requires.patch
+Patch114: bash-setlocale.patch
+Patch115: bash-tty-tests.patch
+
+# 484809, check if interp section is NOBITS
+Patch116: bash-4.0-nobits.patch
+
+# Do the same CFLAGS in generated Makefile in examples
+Patch117: bash-4.1-examples.patch
+
+# Builtins like echo and printf won't report errors
+# when output does not succeed due to EPIPE
+Patch118: bash-4.1-broken_pipe.patch
+
+# Enable system-wide .bash_logout for login shells
+Patch119: bash-4.2-rc2-logout.patch
+
+# Static analyzis shows some issues in bash-2.05a-interpreter.patch
+Patch120: bash-4.2-coverity.patch
+
+# Don't call malloc in signal handler
+Patch121: bash-4.1-defer-sigchld-trap.patch
+
+# 799958, updated info about trap
+Patch122: bash-4.2-manpage_trap.patch
+
+# https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
+Patch123: bash-4.2-size_type.patch
+
+# 1112710 - mention ulimit -c and -f POSIX block size
+Patch124: bash-4.3-man-ulimit.patch
+
+# 1102815 - fix double echoes in vi visual mode
+Patch125: bash-4.3-noecho.patch
+
+#1241533,1224855 - bash leaks memory when LC_ALL set
+Patch126: bash-4.3-memleak-lc_all.patch
+
+# bash-4.4 builds loadable builtin examples by default
+# this patch disables it
+Patch127: bash-4.4-no-loadable-builtins.patch
+
+# 1068697 - Explicitly unset nonblocking mode while reading from stdin
+# This should be dropped while rebasing to bash-4.5
+Patch128: bash-4.4-unset-nonblock-stdin.patch
+
+# 1389838 - command builtin should not abort on variable assignment errors
+# This should be dropped while rebasing to bash-4.5
+Patch129: bash-4.4-assignment-error.patch
+
+# 1458008 - test builtin ignores subsecond while comparing file modification times
+# This should be dropped while rebasing to bash-4.5
+Patch130: bash-4.5-test-modification-time.patch
+
+# 1556867 - case in a for loop inside subshell causes syntax error
+# This should be dropped while rebasing to bash-4.5
+Patch131: bash-4.4-case-in-command-subst.patch
+
+Patch132: bash-4.4-coverity.patch
+
+BuildRequires: texinfo bison
+BuildRequires: ncurses-devel
+BuildRequires: autoconf, gettext
+Requires: filesystem >= 3
+Provides: /bin/sh
+Provides: /bin/bash
+
+%description
+The GNU Bourne Again shell (Bash) is a shell or command language
+interpreter that is compatible with the Bourne shell (sh). Bash
+incorporates useful features from the Korn shell (ksh) and the C shell
+(csh). Most sh scripts can be run by bash without modification.
+
+%package devel
+Summary: Development headers for %{name}
+Requires: %{name} = %{version}-%{release}
+Requires: pkgconf-pkg-config
+
+%description devel
+This package contains development headers for %{name}.
+
+%package doc
+Summary: Documentation files for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains documentation files for %{name}.
+
+%prep
+%autosetup -n %{name}-%{baseversion} -p1
+
+echo %{version} > _distribution
+echo %{release} > _patchlevel
+
+# force refreshing the generated files
+rm y.tab.*
+
+%build
+autoconf
+%configure --with-bash-malloc=no --with-afs
+
+# Recycles pids is neccessary. When bash's last fork's pid was X
+# and new fork's pid is also X, bash has to wait for this same pid.
+# Without Recycles pids bash will not wait.
+make "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' `getconf LFS_CFLAGS`" %{?_smp_mflags}
+
+%install
+if [ -e autoconf ]; then
+  # Yuck. We're using autoconf 2.1x.
+  export PATH=.:$PATH
+fi
+
+# Fix bug #83776
+sed -i -e 's,bashref\.info,bash.info,' doc/bashref.info
+
+%make_install install-headers
+
+mkdir -p %{buildroot}/etc
+
+# make manpages for bash builtins as per suggestion in DOC/README
+pushd doc
+sed -e '
+/^\.SH NAME/, /\\- bash built-in commands, see \\fBbash\\fR(1)$/{
+/^\.SH NAME/d
+s/^bash, //
+s/\\- bash built-in commands, see \\fBbash\\fR(1)$//
+s/,//g
+b
+}
+d
+' builtins.1 > man.pages
+for i in echo pwd test kill; do
+  sed -i -e "s,$i,,g" man.pages
+  sed -i -e "s,  , ,g" man.pages
+done
+
+install -p -m 644 builtins.1 %{buildroot}%{_mandir}/man1/builtins.1
+
+for i in `cat man.pages` ; do
+  echo .so man1/builtins.1 > %{buildroot}%{_mandir}/man1/$i.1
+  chmod 0644 %{buildroot}%{_mandir}/man1/$i.1
+done
+popd
+
+# Link bash man page to sh so that man sh works.
+ln -s bash.1 %{buildroot}%{_mandir}/man1/sh.1
+
+# Not for printf, true and false (conflict with coreutils)
+rm -f %{buildroot}/%{_mandir}/man1/printf.1
+rm -f %{buildroot}/%{_mandir}/man1/true.1
+rm -f %{buildroot}/%{_mandir}/man1/false.1
+
+ln -sf bash %{buildroot}%{_bindir}/sh
+rm -f %{buildroot}%{_infodir}/dir
+mkdir -p %{buildroot}/etc/skel
+install -p -m644 %SOURCE1 %{buildroot}/etc/skel/.bashrc
+install -p -m644 %SOURCE2 %{buildroot}/etc/skel/.bash_profile
+install -p -m644 %SOURCE3 %{buildroot}/etc/skel/.bash_logout
+LONG_BIT=$(getconf LONG_BIT)
+mv %{buildroot}%{_bindir}/bashbug \
+   %{buildroot}%{_bindir}/bashbug-"${LONG_BIT}"
+ln -s bashbug-"${LONG_BIT}" %{buildroot}%{_bindir}/bashbug
+ln -s bashbug.1 %{buildroot}/%{_mandir}/man1/bashbug-"$LONG_BIT".1
+
+# Fix missing sh-bangs in example scripts (bug #225609).
+for script in \
+  examples/scripts/shprompt
+# I don't know why these are gone in 4.3
+  #examples/scripts/krand.bash \
+  #examples/scripts/bcsh.sh \
+  #examples/scripts/precedence \
+do
+  cp "$script" "$script"-orig
+  echo '#!/bin/bash' > "$script"
+  cat "$script"-orig >> "$script"
+  rm -f "$script"-orig
+done
+
+# bug #820192, need to add execable alternatives for regular built-ins
+for ea in alias bg cd command fc fg getopts hash jobs read type ulimit umask unalias wait
+do
+  cat <<EOF > "%{buildroot}"/%{_bindir}/"$ea"
+#!/bin/sh
+builtin $ea "\$@"
+EOF
+chmod +x "%{buildroot}"/%{_bindir}/"$ea"
+done
+
+%find_lang %{name}
+
+# copy doc to /usr/share/doc
+cat /dev/null > %{name}-doc.files
+mkdir -p %{buildroot}/%{_pkgdocdir}/doc
+# loadables aren't buildable
+rm -rf examples/loadables
+for file in CHANGES COMPAT NEWS NOTES POSIX RBASH README examples
+do
+  cp -rp "$file" %{buildroot}/%{_pkgdocdir}/"$file"
+  echo "%%doc %{_pkgdocdir}/$file" >> %{name}-doc.files
+done
+echo "%%doc %{_pkgdocdir}/doc" >> %{name}-doc.files
+
+
+
+%if %{with tests}
+%check
+make check
+%endif
+
+# post is in lua so that we can run it without any external deps.  Helps
+# for bootstrapping a new install.
+# Jesse Keating 2009-01-29 (code from Ignacio Vazquez-Abrams)
+# Roman Rakus 2011-11-07 (code from Sergey Romanov) #740611
+%post -p <lua>
+nl        = '\n'
+sh        = '/bin/sh'..nl
+bash      = '/bin/bash'..nl
+f = io.open('/etc/shells', 'a+')
+if f then
+  local shells = nl..f:read('*all')..nl
+  if not shells:find(nl..sh) then f:write(sh) end
+  if not shells:find(nl..bash) then f:write(bash) end
+  f:close()
+end
+
+%postun -p <lua>
+-- Run it only if we are uninstalling
+if arg[2] == "0"
+then
+  t={}
+  for line in io.lines("/etc/shells")
+  do
+    if line ~= "/bin/bash" and line ~= "/bin/sh"
+    then
+      table.insert(t,line)
+    end
+  end
+
+  f = io.open("/etc/shells", "w+")
+  for n,line in pairs(t)
+  do
+    f:write(line.."\n")
+  end
+  f:close()
+end
+
+%files -f %{name}.lang
+%config(noreplace) /etc/skel/.b*
+%{_bindir}/sh
+%{_bindir}/bash
+%{_bindir}/alias
+%{_bindir}/bg
+%{_bindir}/cd
+%{_bindir}/command
+%{_bindir}/fc
+%{_bindir}/fg
+%{_bindir}/hash
+%{_bindir}/getopts
+%{_bindir}/jobs
+%{_bindir}/read
+%{_bindir}/type
+%{_bindir}/ulimit
+%{_bindir}/umask
+%{_bindir}/unalias
+%{_bindir}/wait
+%dir %{_pkgdocdir}/
+%license COPYING
+%attr(0755,root,root) %{_bindir}/bashbug[-.]*
+%{_bindir}/bashbug
+%{_infodir}/bash.info*
+%{_mandir}/*/*
+%{_mandir}/*/..1*
+%doc RBASH README
+%doc doc/{FAQ,INTRO,README,bash{,ref}.html}
+
+%files doc -f %{name}-doc.files
+%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
+
+%files devel
+%{_includedir}/%{name}
+%{_libdir}/pkgconfig/%{name}.pc
+
+%changelog
+* Mon Jan 14 2019 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-7
+- Bump version number
+  Resolves: #1650059
+
+* Tue Oct 09 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-6
+- Set custom PATH in non-login shells
+  Resolves: #1627074
+
+* Thu Sep 20 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-5
+- Fix some issues identified by coverity
+  Resolves: #1602450
+
+* Mon Aug 06 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-4
+- Bump version number
+
+* Tue Jun 26 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-3
+- Move user bin directories in front of the PATH
+  Resolves: #1595223
+
+* Thu Mar 15 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-2
+- Fix handling case statement in command subsitution
+  Resolves: #1556867
+
+* Mon Feb 12 2018 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.19-1
+- Update to bash-4.4 patchlevel 19
+  Resolves: #1540383
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.12-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Nov 08 2017 Christoph Junghans <junghans@votca.org> - 4.4.12-13
+- Package headers in devel package, in prep for MPI-bash
+
+* Mon Oct 30 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-12
+- Revert change to always source from /etc/bashrc
+
+* Tue Aug 29 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-11
+- Always source from /etc/bashrc
+  Resolves: #1193590
+
+* Tue Aug 22 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-10
+- Enable parallel builds
+
+* Tue Aug 08 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-9
+- command should not be treated as special builtin
+  Resolves: #1479220
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.12-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.12-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Jun 30 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-6
+- Fix test for comparing file modification times when they differ by subsecond
+  Resolves: #1458008
+
+* Tue May 30 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-5
+- command builtin should not abort on variable assignment errors
+  Resolves: #1389838
+
+* Wed Apr 26 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-4
+- Explicitly unset nonblocking mode while reading from stdin
+  Resolves: #1068697
+
+* Wed Apr 26 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-3
+- Fix heredoc file descriptor leak
+  Resolves: #1413676
+
+* Tue Apr 18 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-2
+- Document 'bashbug' for reporting bugs
+  Resolves: #1255886
+
+* Mon Apr 10 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.12-1
+- Update to bash-4.4 patchlevel 12
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.11-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Sat Jan 21 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.11-1
+- Update to bash-4.4 patchlevel 11
+
+* Mon Jan 16 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.5-1
+- Update to bash-4.4 patchlevel 5
+
+* Fri Jan 06 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.4.0-1
+- Rebase to bash-4.4
+  Resolves: #1376609
+
+* Fri Sep 30 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.3.43-4
+- CVE-2016-7543: Fix for arbitrary code execution via SHELLOPTS+PS4 variables
+  Resolves: #1379634
+
+* Wed Sep 21 2016 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 4.3.43-3
+- CVE-2016-0634 - Fix for arbitrary code execution via malicious hostname
+  Resolves: #1377614
+
+* Tue Sep  6 2016 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 4.3.43-2
+- Inverted the condition for UsrMove safeguard check, so we comply with:
+  https://fedoraproject.org/wiki/Packaging:Conflicts
+
+* Thu Jun 23 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.3.43-1
+- Fix a crash in nested pipeline in lastpipe mode
+  Resolves: #1349430
+
+* Tue May 17 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.3.42-5
+- Do not set terminate_immediately and interrupt_immediately while expanding tilda
+  Resolves: #1336800
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.42-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Mon Jan 11 2016 Ondrej Oprala <ooprala@redhat.com> - 4.3.42-3
+- Actually do it properly this time
+  Related: #1297166
+
+* Mon Jan 11 2016 Ondrej Oprala <ooprala@redhat.com> - 4.3.42-2
+- Provide exec-able alternatives to hash, type and ulimit
+  Resolves: #1297166
+
+* Tue Aug 18 2015 Ondrej Oprala - 4.3.42-1
+- Patchlevel 42
+
+* Mon Aug 03 2015 Ondrej Oprala - 4.3.39-6
+- #1245233 - fixed memleak
+
+* Wed Jul 15 2015 Ondrej Oprala - 4.3.39-5
+- #1182278 - bash crashes on `select' if REPLY is readonly
+- #1241533,1224855 - bash memleak when LC_ALL set
+
+* Tue Jun 30 2015 Ondrej Oprala - 4.3.39-4
+- Fix a leak introduced by plevel39
+
+* Tue Jun 30 2015 Ondrej Oprala - 4.3.39-3
+- Fix --rpm-requires
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.3.39-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Thu May 21 2015 Ondrej Oprala <ooprala@redhat.com> - 4.3.39-1
+- Patchlevel 39
+
+* Mon Mar 16 2015 Than Ngo <than@redhat.com> 4.3.33-3
+- rebuild against new gcc
+
+* Fri Jan 23 2015 Elad Alfassa <elad@fedoraproject.org> - 4.3.25-3
+- Enable PIE (hardened build)
+
+* Tue Dec 30 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.33-1
+- Patchlevel 33
+
+* Wed Oct 08 2014 Dan Horák <dan[at]danny.cz> - 4.3.30-2
+- force refreshing generated files, fixes build on s390
+
+* Mon Oct 06 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.30-1
+- Patchlevel 30
+
+* Mon Oct 06 2014  Ondrej Oprala <ooprala@redhat.com> - 4.3.28-1
+- RedHat's patchlevel 28
+
+* Thu Sep 25 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.25-2
+- CVE-2014-7169
+  Resolves: #1146319
++
+* Thu Sep 25 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.25-1
+- Patchlevel 25
+
+* Wed Sep 24 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.24-2
+- Inhibit code injection - patch by Stephane Chazelas
+
+* Wed Aug 20 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.24-1
+- Patchlevel 24
+
+* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.3.22-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.22-1
+- Patchlevel 22
+
+* Wed Jul 30 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.18-7
+- #1102815 - fix double echo in vi visual mode
+
+* Thu Jul 24 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.18-6
+- Apply all upstream patches since 4.3-18-1 up to this date
+
+* Thu Jul 24 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.18-5
+- Array name expansion - apply upstream quickfix
+
+* Mon Jul 21 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.18-4
+- Mention ulimit -c and -f block size in POSIX mode
+
+* Fri Jul 11 2014 Tom Callaway <spot@fedoraproject.org> - 4.3.18-3
+- fix license handling
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.3.18-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon Apr 14 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.18-1
+- Patchlevel 18
+
+* Mon Apr 14 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.11-2
+- And let the build system know...
+
+* Mon Apr 14 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.11-1
+- Patchlevel 11
+
+* Tue Apr 01 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.8-1
+- Patchlevel 8
+
+* Thu Feb 27 2014 Ondrej Oprala <ooprala@redhat.com> - 4.3.0-1
+- Update to bash-4.3
+
+* Wed Dec 04 2013 Ondrej Oprala <ooprala@redhat.com> - 4.2.45-6
+- Change the paths for format-security patch
+
+* Wed Dec 04 2013 Ondrej Oprala <ooprala@redhat.com> - 4.2.45-5
+- bash FTBFS if -Werror=format-string is used (#1036998)
+
+* Fri Aug 09 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-4
+- Added suggestion to .bashrc how to disable autopaging in systemctl
+
+* Fri Jul 26 2013 Ville Skyttä <ville.skytta@iki.fi> - 4.2.45-3
+- Install docs to %%{_pkgdocdir} where available.
+- Fix bogus dates in %%changelog.
+
+* Thu Jun 27 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-2
+- Fixed a bug that caused trap handlers to be executed recursively,
+  corrupting internal data structures.
+
+* Mon Mar 11 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-1
+- Patchlevel 45
+
+* Thu Jan 31 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-3
+- Fix usage of partial unitialized structure
+  Resolves: #857948
+
+* Thu Jan 31 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-2
+- Fix fd leaks
+  Resolves: #903833
+
+* Thu Jan 03 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-1
+- Patchlevel 42
+
+* Thu Nov 29 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-3
+- Use unsigned type for size
+
+* Tue Nov 27 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-2
+- Create bashbug symlink
+
+* Fri Nov 02 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-1
+- Patchlevel 39
+
+* Tue Aug 28 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-8
+- Fix a comments in rpm changelog
+
+* Tue Aug 28 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-7
+- Update info about trap in man page
+  Resolves: #799958
+- instead of setting the signal handler to SIG_IGN while installing
+  the new trap handler, block the signal and unblock it after the new handler
+  is installed
+  Resolves: #695656
+
+* Wed Aug 22 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-6
+- Revert revision 4.2.37-5 - already fixed upstream
+
+* Tue Aug 21 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-5
+- Don't filter out environmental variables with
+  a dot in the name
+  Resolves: #819995
+
+* Wed Aug 08 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-4
+- Added doc subdir to bash-doc ownership list
+  Resolves: #846734
+
+* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-3
+- Increment patchlevel tag
+
+* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.36-3
+- Patchlevel 37
+
+* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.36-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Tue Jul 10 2012 Roman Rakus <rrakus@redhat.com> - 4.2.36-1
+- Patchlevel 36
+
+* Sat Jun 23 2012 Roman Rakus <rrakus@redhat.com> - 4.2.29-3
+- Remove /bin from DEFAULT_PATH_VALUE
+  Resolves: #834571
+
+* Thu May 31 2012 Roman Rakus <rrakus@redhat.com> - 4.2.29-2
+- Patchlevel 29
+- Also keep release at -2, so we are newer then f16 and f17
+
+* Tue May 29 2012 Roman Rakus <rrakus@redhat.com> - 4.2.28-2
+- Provide exec-able alternatives to some builtins
+  Resolves #820192
+
+* Wed May 09 2012 Roman Rakus <rrakus@redhat.com> - 4.2.28-1
+- Patchlevel 28
+
+* Mon Apr 23 2012 Roman Rakus <rrakus@redhat.com> - 4.2.24-2
+- Don't call malloc in signal handler
+
+* Tue Mar 13 2012 Roman Rakus <rrakus@redhat.com> - 4.2.24-1
+- Patchlevel 24
+
+* Wed Jan 25 2012 Harald Hoyer <harald@redhat.com> 4.2.20-4
+- install everything in /usr
+  https://fedoraproject.org/wiki/Features/UsrMove
+
+* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.20-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Thu Nov 24 2011 Roman Rakus <rrakus@redhat.com> - 4.2.20-2
+- Add missing f:close() in postun
+- Patchlevel 20
+
+* Thu Nov 10 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-7
+- erase /bin/bash and /bin/sh in postun only if we are uninstalling (#752827)
+
+* Mon Nov 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-6
+- Simplified lua post script (#740611)
+
+* Fri Jul 29 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-5
+- Clean up unneeded bash-doc files (Ville Skyttä) (#721116)
+
+* Wed Jun 22 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-4
+- Don't crash when use `read' with associative array (#715050)
+
+* Tue Jun 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-3
+- Added $HOME/.local/bin to PATH in .bash_profile (#699812)
+
+* Thu May 05 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-2
+- Inc. a release no.
+
+* Thu May 05 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-1
+- Patchlevel 10
+
+* Thu Mar 31 2011 Roman Rakus <rrakus@redhat.com> - 4.2.8-2
+- Remove bash-4.2-xdupmbstowcs2-patch, which introduced another bugs
+
+* Tue Mar 15 2011 Roman Rakus <rrakus@redhat.com> - 4.2.8-1
+- Patchlevel 8
+
+* Tue Mar 15 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-3
+- #684293, fix the infinite loop with invalid wide char
+
+* Mon Mar 14 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-2
+- Use lua script in postun
+
+* Mon Mar 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-1
+- Patchlevel 7
+
+* Wed Mar 02 2011 Roman Rakus <rrakus@redhat.com> - 4.2.6-1
+- Patchlevel 6
+
+* Tue Mar 01 2011 Roman Rakus <rrakus@redhat.com> - 4.2.5-1
+- Patchlevel 5
+- Static analyzis show some issues in some patches
+- Some cleanup
+
+* Wed Feb 16 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-2
+- pattern matching glitch, patch from upstream
+
+* Wed Feb 16 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-1
+- Release bash-4.2
+
+* Mon Feb 14 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-0.2.rc2
+- Enable system-wide .bash_logout for login shells
+
+* Wed Feb 09 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-0.1.rc2
+- Update to bash-4.2-rc2
+
+* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.9-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Jan 06 2011 Roman Rakus <rrakus@redhat.com> - 4.1.9-5
+- Builtins like echo and printf won't report errors
+  when output does not succeed due to EPIPE
+
+* Thu Dec 16 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-4
+- Drop doc/examples/loadables
+
+* Wed Dec 01 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-3
+- don't segfault when trying to bind int variable to array
+  with bad array subsrcipt
+  Resolves: #618289
+
+* Fri Oct 15 2010 Ville Skyttä <ville.skytta@iki.fi> - 4.1.9-2
+- Move doc dir ownership to main package.
+- Preserve doc timestamps.
+- Add --without tests option for building without running the test suite.
+
+* Thu Oct 14 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-1
+- Patch level 9
+
+* Mon Aug 02 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-4
+- Use better nomenclature for --rpm-requires bash option (#557134)
+
+* Tue Jun 22 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-3
+- Added missing patch
+
+* Tue Jun 22 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-2
+- Do the same CFLAGS in generated Makefile in examples
+
+* Fri May 21 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-1
+- Patch level 7
+
+* Mon Apr 12 2010 Roman Rakus <rrakus@redhat.com> - 4.1.5-1
+- Patch level 5
+- There's no more need for Requires(post) ncurses-libs
+
+* Tue Mar 30 2010 Roman Rakus <rrakus@redhat.com> - 4.1.2-4
+- Corrected requires patch (#563301)
+
+* Fri Jan 22 2010 rrakus@redhat.com 4.1.2-3
+- Don't use cond-rmatch patch
+- Use manso patch
+- Include COPYING in base bash rpm
+
+* Fri Jan 22 2010 rrakus@redhat.com 4.1.2-2
+- Correct patchlevel 2
+
+* Fri Jan 22 2010 Roman Rakus rrakus@redhat.com 4.1.2-1
+- Patchlevel 4.2
+- Removed old patch
+- Returned back manso patch
+
+* Fri Jan 08 2010 Roman Rakus rrakus@redhat.com 4.1.0-2
+- Include COPYING in doc dir
+
+* Mon Jan 04 2010 Roman Rakus <rrakus@redhat.com> - 4.1.0-1
+- Upstream 4.1
+
+* Sun Dec 27 2009 Roman Rakus <rrakus@redhat.com> - 4.1-0.2.rc1
+- Fixed patch for fuzz=0
+
+* Sun Dec 27 2009 Roman Rakus <rrakus@redhat.com> - 4.1-0.1.rc1
+- Upstream 4.1.rc1
+
+* Fri Dec 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0.35-2
+- Don't segfault when TERM=eterm* and EMACS is unset (#530911)
+
+* Thu Oct 29 2009 Roman Rakus <rrakus@redhat.com> - 4.0.35-1
+- Patch level 35
+
+* Mon Oct 05 2009 Roman Rakus <rrakus@redhat.com> - 4.0.33-2
+- Make symlink from bashbug-suffix to bashbug man pages
+
+* Wed Sep 16 2009 Roman Rakus <rrakus@redhat.com> - 4.0.33-1
+- Patch level 33
+- spec file cleanup
+
+* Fri Sep 04 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-3
+- check if interp section is NOBITS
+- define Recycles pids
+
+* Wed Aug 26 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-2
+- alloc memory for key in creation associative array (#518644)
+
+* Tue Jul 28 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-1
+- Upstream patch level 28
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0.24-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Tue May 19 2009 Roman Rakus <rrakus@redhat.com> - 4.0.24-1
+- Upstream patch level 24
+
+* Wed Apr 22 2009 Roman Rakus <rrakus@redhat.com> - 4.0.16-1
+- better to use patch level in version tag like vim do
+
+* Tue Apr 21 2009 Roman Rakus <rrakus@redhat.com> - 4.0-7.16
+- Use patch level in Release tag
+
+* Wed Apr 08 2009 Roman Rakus <rrakus@redhat.com> - 4.0-6
+- Official upstream patch level 16
+
+* Mon Mar 30 2009 Roman Rakus <rrakus@redhat.com> - 4.0-5
+- Split documentation, use bash-doc package
+  Resolves: #492447
+
+* Sat Mar 21 2009 Lubomir Rintel <lkundrak@v3.sk> - 4.0-4
+- Add full URLs to upstream patches
+- Don't uselessly use %%version macro
+
+* Wed Mar 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0-3
+- Official upstream patch level 10
+
+* Wed Feb 25 2009 Roman Rakus <rrakus@redhat.com> - 4.0-2
+- Save parser state in pcomplete.
+  Resolves: #487257
+
+* Tue Feb 24 2009 Roman Rakus <rrakus@redhat.com> - 4.0-1
+- Release of bash-4.0
+
+* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-0.5.rc1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Wed Feb 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.4.rc1
+- Fix handling pipelines with `set -e'
+  Resolves: #483385
+
+* Thu Jan 29 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.3.rc1
+- No more debug output
+  Resolves: #483002
+
+* Wed Jan 28 2009 Jesse Keating <jkeating@redhat.com> - 4.0-0.2.rc1
+- Replace post code with lua to be able to not have external deps
+
+* Mon Jan 26 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.1.rc1
+- Fixed release tag
+
+* Wed Jan 21 2009 Roman Rakus <rrakus@redhat.com> - 4.0-rc1.1
+- Bump to upstream bash-4.0-rc1
+
+* Mon Dec 15 2008 Roman Rakus <rrakus@redhat.com> - 3.2-33
+- fc builtin fix
+  Resolves: #438841
+
+* Mon Dec 15 2008 Roman Rakus <rrakus@redhat.com> - 3.2-32
+- Enabling auditing
+  Resolves: #476216
+
+* Tue Dec 09 2008 Roman Rakus <rrakus@redhat.com> - 3.2-31
+- Patchlevel 48
+
+* Thu Dec 04 2008 Roman Rakus <rrakus@redhat.com> - 3.2-30
+- Added check for `command_not_found_handler' shell function
+  Resolves: #432579
+
+* Tue Oct 28 2008 Jesse Keating <jkeating@redhat.com> - 3.2-29
+- Add the Requires(post) back for ncurses-libs, so that rpm knows
+  where to break the loop.  The post actually does require the curses
+  libs for the sh calls.  Could consider doing this in LUA and not have
+  any external deps.
+
+* Thu Oct 23 2008 Roman Rakus <rrakus@redhat.com> - 3.2-28
+- Removing Requires for mktemp and ncurses, which cause
+  dependencing loop
+- Enabling #define SSH_SOURCE_BASHRC, because ssh changed.
+  Resolves: #458839
+- Catch signals right after calling execve()
+  Resolves: #455548
+
+* Thu Jul 17 2008 Roman Rakus <rrakus@redhat.com> - 3.2-27
+- Changes in man page - #442018, #445692, #446625, #453409
+- Changed patches to satisfy fuzz=0
+
+* Thu Jun  5 2008 Roman Rakus <rrakus@redhat.com> - 3.2-26
+- Patchlevel 39
+
+* Tue Jun  3 2008 Roman Rakus <rrakus@redhat.com> - 3.2-25
+- #449512 - reverting back last change - don't use glob library
+
+* Wed May 28 2008 Roman Rakus <rrakus@redhat.com> - 3.2-24
+- #217359 - use posix glob library
+
+* Thu May 22 2008 Roman Rakus <rrakus@redhat.com> - 3.2-23
+- #446420 - COMP_WORDBREAKS settings now works
+
+* Fri Feb 29 2008 Tomas Janousek <tjanouse@redhat.com> - 3.2-22
+- drop /usr/bin/clear from /etc/skel/.bash_logout as suggested by #429406
+
+* Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.2-21
+- Autorebuild for GCC 4.3
+
+* Mon Jan 14 2008 Tomas Janousek <tjanouse@redhat.com> - 3.2-20
+- Added bash32-026 upstream official patch
+- Added bash32-027 upstream official patch (#249987)
+- Added bash32-028 upstream official patch
+- Added bash32-029 upstream official patch (#286861)
+- Added bash32-030 upstream official patch
+- Added bash32-031 upstream official patch (#358231)
+- Added bash32-032 upstream official patch
+- Added bash32-033 upstream official patch
+- Fix insert command repeating in vi mode (#190350)
+
+* Tue Nov 06 2007 Tomas Janousek <tjanouse@redhat.com> - 3.2-19
+- fix cursor position when prompt has one invisible character (#358231)
+- dropped examples/loadables/ from docs, since it wasn't possible to build them
+  anyway (#174380)
+- fix #286861: Wrong input confuses bash's arithmetic unit permanently
+- fix #344411: $RANDOM stays the same when job executed in the background
+
+* Fri Aug 31 2007 Pete Graner <pgraner@redhat.com> - 3.2-18
+- Added bash32-021 upstream official patch
+- Added bash32-025 upstream official patch
+- Added bash32-024 upstream official patch
+- Added bash32-023 upstream official patch
+- Added bash32-022 upstream official patch
+
+* Wed Aug 29 2007 Pete Graner <pgraner@redhat.com> - 3.2-17
+- Added bash32-018 upstream official patch
+- Added bash32-020 upstream official patch
+- Added bash32-019 upstream official patch
+
+* Thu Aug 23 2007 Pete Graner <pgraner@redhat.com> - 3.2-16
+- Rebuild
+
+* Mon Aug 20 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
+- Update to the Improve bash $RANDOM pseudo RNG (bug #234906) 
+  now works with subshells and make $RANDOM on demand thus reducing the 
+  amount of AVCs thrown.
+
+* Thu Aug 16 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
+- Changed spec file License to GPLv2+
+
+* Wed Aug 15 2007 Pete Graner <pgraner@redhat.com> - 3.2-13
+- Improve bash $RANDOM pseudo RNG (bug #234906)
+
+* Fri Jul 20 2007 Tim Waugh <twaugh@redhat.com> 3.2-12
+- Quote environment variables in the post scriptlet to prevent upgrade
+  failures (bug #249005).
+
+* Thu Jul  5 2007 Tim Waugh <twaugh@redhat.com> 3.2-11
+- Patchlevel 17 (bug #241647).
+
+* Wed Jul  4 2007 Tim Waugh <twaugh@redhat.com> 3.2-10
+- Clarification in the ulimit man page (bug #220657).
+
+* Mon Feb 12 2007 Tim Waugh <twaugh@redhat.com> 3.2-9
+- Rebuild to link with libtinfo instead of libncurses.
+
+* Wed Feb  7 2007 Tim Waugh <twaugh@redhat.com> 3.2-8
+- Avoid %%makeinstall (bug #225609).
+
+* Tue Feb  6 2007 Tim Waugh <twaugh@redhat.com> 3.2-7
+- Reinstated this change:
+  - Post requires ncurses (bug #224567).
+- Reverted this change:
+  - Added triggers for install-info (bug #225609).
+
+* Tue Feb  6 2007 Tim Waugh <twaugh@redhat.com> 3.2-6
+- Reverted this change:
+  - Post requires ncurses (bug #224567).
+
+* Mon Feb  5 2007 Tim Waugh <twaugh@redhat.com> 3.2-5
+- Added triggers for install-info (bug #225609).
+- Use full path to utilities in scriptlets (bug #225609).
+- Fix missing sh-bangs in example scripts (bug #225609).
+- Post requires ncurses (bug #224567).
+- Removed Prefix tag (bug #225609).
+- Fixed BuildRoot tag (bug #225609).
+- Removed trailing full-stop from summary (bug #225609).
+- Spec file is now UTF-8 (bug #225609).
+- Removed obsolete Obsoletes (bug #225609).
+- Moved 'make check' to new 'check' section (bug #225609).
+- Removed uses of RPM_SOURCE_DIR (bug #225609).
+- Fixed macros in changelog (bug #225609).
+- Changed tabs to spaces (bug #225609).
+
+* Tue Jan 23 2007 Tim Waugh <twaugh@redhat.com> 3.2-4
+- Slightly better .bash_logout (bug #223960).
+
+* Fri Jan 19 2007 Tim Waugh <twaugh@redhat.com> 3.2-3
+- Back out rmatch change introduced in 3.2 (bug #220087).
+
+* Tue Jan 16 2007 Miroslav Lichvar <mlichvar@redhat.com> 3.2-2
+- Link with ncurses.
+
+* Fri Dec 15 2006 Tim Waugh <twaugh@redhat.com> 3.2-1
+- Build requires autoconf and gettext.
+- 3.2.  No longer need aq, login, ulimit, sighandler or read-memleak
+  patches.
+
+* Wed Jul 12 2006 Tim Waugh <twaugh@redhat.com> 3.1-17
+- Fixed 'tags out of date' problem with 'info bash' (bug #150118).
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.1-16.1
+- rebuild
+
+* Wed Jun 28 2006 Tim Waugh <twaugh@redhat.com> 3.1-16
+- Removed 'unset USERNAME' from default .bash_profile (bug #196735).
+
+* Thu Jun 15 2006 Tim Waugh <twaugh@redhat.com> 3.1-15
+- Updated requires patch to the ALT version.
+
+* Wed May 31 2006 Tim Waugh <twaugh@redhat.com> 3.1-14
+- More sighandler fixes, this time hypothetical.
+
+* Thu May 25 2006 Tim Waugh <twaugh@redhat.com> 3.1-13
+- Another fix for the sighandler patch (bug #192297).
+
+* Thu Apr 13 2006 Tim Waugh <twaugh@redhat.com> 3.1-12
+- Patchlevel 17.
+
+* Tue Apr  4 2006 Tim Waugh <twaugh@redhat.com> 3.1-11
+- Patchlevel 16.
+
+* Thu Mar 23 2006 Tim Waugh <twaugh@redhat.com> 3.1-10
+- Patchlevel 14.
+
+* Thu Mar  2 2006 Tim Waugh <twaugh@redhat.com> 3.1-9
+- Fixed duplicate documentation of ulimit '-x' option introduced by
+  ulimit patch (bug #183596).
+
+* Tue Feb 21 2006 Tim Waugh <twaugh@redhat.com> 3.1-8
+- Patchlevel 10.
+
+* Thu Feb 16 2006 Tim Waugh <twaugh@redhat.com> 3.1-7
+- Patchlevel 8.
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 3.1-6.2
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.1-6.1
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Sun Feb  5 2006 Tim Waugh <twaugh@redhat.com> 3.1-6
+- Patchlevel 7.
+
+* Wed Jan 18 2006 Tim Waugh <twaugh@redhat.com>
+- Removed inaccuracies from %%description (bug #178189).
+
+* Fri Jan 13 2006 Tim Waugh <twaugh@redhat.com> 3.1-5
+- Fix 'exec -l /bin/bash'.
+
+* Thu Jan 12 2006 Tim Waugh <twaugh@redhat.com> 3.1-4
+- Fix sighandler patch bug (bug #177545).
+
+* Tue Jan 10 2006 Tim Waugh <twaugh@redhat.com> 3.1-3
+- Patchlevel 5.
+
+* Fri Jan  6 2006 Tim Waugh <twaugh@redhat.com> 3.1-2
+- No longer need loadables, mbinc or shellfunc patches.
+- Use literal single-quote in bash man page where appropriate (bug #177051).
+
+* Mon Jan  2 2006 Tim Waugh <twaugh@redhat.com> 3.1-1
+- 3.1.
+- No longer need ia64, utf8, multibyteifs, jobs, sigpipe,
+  read-e-segfault, manpage, crash, pwd, afs, subshell patches.
+- Remove wrap patch for now.
+- Use upstream patch to fix arrays.
+
+* Thu Dec 15 2005 Tim Waugh <twaugh@redhat.com> 3.0-41
+- Missed another loop for improved sighandler patch (bug #169231).
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Thu Dec  8 2005 Tim Waugh <twaugh@redhat.com> 3.0-40
+- Fix read memleak when reading from non-blocking fd (bug #173283).
+- Missed another loop for improved sighandler patch (bug #169231).
+
+* Wed Dec  7 2005 Tim Waugh <twaugh@redhat.com> 3.0-39
+- Missed a loop for improved sighandler patch (bug #169231).
+
+* Tue Dec  6 2005 Tim Waugh <twaugh@redhat.com> 3.0-38
+- Test out improved sighandler patch (bug #169231).
+
+* Tue Nov 22 2005 Tim Waugh <twaugh@redhat.com> 3.0-37
+- Applied patch from upstream to fix parsing problem (bug #146638).
+
+* Wed Nov  9 2005 Tim Waugh <twaugh@redhat.com> 3.0-36
+- Added Url: tag (bug #172770).
+- Do not explicitly gzip info pages (bug #172770).
+- Fix permissions on bashbug (bug #172770).
+
+* Thu Oct  6 2005 Tim Waugh <twaugh@redhat.com> 3.0-35
+- Fixed memory allocation bug in multibyteifs patch (bug #169996).
+
+* Fri Sep 23 2005 Tim Waugh <twaugh@redhat.com>
+- Use 'volatile' in sighandler patch.
+
+* Wed Sep 21 2005 Tim Waugh <twaugh@redhat.com> 3.0-34
+- Avoid writing history files during signal handling (bug #163235).
+
+* Mon Aug  8 2005 Tim Waugh <twaugh@redhat.com> 3.0-33
+- Fixed multibyte IFS handling for invalid input (bug #165243).
+
+* Mon Aug  8 2005 Tim Waugh <twaugh@redhat.com> 3.0-32
+- Fixed 'LC_ALL=C export LC_ALL' behaviour (bug #165249).
+
+* Thu Jun 23 2005 Tim Waugh <twaugh@redhat.com>
+- Added ulimit support for RLIMIT_NICE and RLIMIT_RTPRIO (bug #157049).
+
+* Wed Jun  8 2005 Tim Waugh <twaugh@redhat.com>
+- Move a comment in dot-bashrc (bug #159522).
+
+* Tue May 10 2005 Tim Waugh <twaugh@redhat.com> 3.0-31
+- Small fix for multibyteifs patch to prevent segfault (bug #157260).
+
+* Wed Apr 20 2005 Tim Waugh <twaugh@redhat.com>
+- Fixed AFS support for output redirection, so that the correct errors
+  are reported for other filesystems (bug #155373).
+
+* Tue Mar 15 2005 Tim Waugh <twaugh@redhat.com> 3.0-30
+- Fix PS1 expansion crash when PWD is unset (bg #151116).
+
+* Wed Mar  2 2005 Tim Waugh <twaugh@redhat.com> 3.0-29
+- Rebuild for new GCC.
+
+* Thu Feb 17 2005 Tim Waugh <twaugh@redhat.com> 3.0-28
+- Define _GNU_SOURCE in CPPFLAGS (bug #147573).
+
+* Mon Feb 14 2005 Tim Waugh <twaugh@redhat.com>
+- Reverted this change:
+  - Added code to /etc/skel/.bash_logout to support the gpm selection buffer
+    invalidation on virtual terminals (bug #115493).
+
+* Mon Jan 31 2005 Tim Waugh <twaugh@redhat.com> 3.0-27
+- Applied upstream patch to fix a potential NULL dereference.
+
+* Fri Jan 28 2005 Tim Waugh <twaugh@redhat.com> 3.0-26
+- Fixed job handling bug (bug #145124).
+
+* Sun Dec  5 2004 Tim Waugh <twaugh@redhat.com> 3.0-25
+- Applied patch from Florian La Roche to fix CPPFLAGS quoting in spec file.
+
+* Tue Nov 30 2004 Tim Waugh <twaugh@redhat.com>
+- Fixed typo in man page (spotted on bug-bash).
+
+* Thu Nov 18 2004 Tim Waugh <twaugh@redhat.com> 3.0-24
+- Use upstream patch to fix bug #139575 and bug #139306.
+
+* Thu Nov 18 2004 Tim Waugh <twaugh@redhat.com> 3.0-23
+- Fixed last patch to avoid regressions (bug #139575).
+
+* Mon Nov 15 2004 Tim Waugh <twaugh@redhat.com> 3.0-22
+- Fixed prompt wrapping code to cope with zero-length prompts (bug #139306).
+
+* Thu Nov 11 2004 Tim Waugh <twaugh@redhat.com> 3.0-21
+- Added code to /etc/skel/.bash_logout to support the gpm selection buffer
+  invalidation on virtual terminals (bug #115493).
+
+* Wed Nov 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-20
+- Patchlevel 16.
+
+* Mon Nov  1 2004 Tim Waugh <twaugh@redhat.com>
+- Patchlevel 15.
+
+* Tue Oct 19 2004 Tim Waugh <twaugh@redhat.com> 3.0-17
+- Patchlevel 14.
+- No longer need brace patch.
+
+* Wed Sep 29 2004 Tim Waugh <twaugh@redhat.com> 3.0-16
+- Apply patch from Chet Ramey to fix brace expansion.
+
+* Fri Sep 24 2004 Tim Waugh <twaugh@redhat.com> 3.0-15
+- Minor fix for job handling.
+
+* Mon Sep 13 2004 Tim Waugh <twaugh@redhat.com>
+- Add bashbug back in (with suffix).
+
+* Mon Sep 13 2004 Tim Waugh <twaugh@redhat.com>
+- Remove bash2.
+
+* Fri Sep 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-14
+- Don't run tests that read from /dev/tty.
+- Patchlevel 13.
+
+* Wed Sep  8 2004 Tim Waugh <twaugh@redhat.com> 3.0-13
+- Check for EINVAL from waitpid() and avoid WCONTINUED in that case.
+- Fixed jobs4 test.
+- Applied experimental upstream patch for trap compatibility.
+- Re-make documentation to reflect source changes.
+
+* Tue Sep  7 2004 Tim Waugh <twaugh@redhat.com> 3.0-12
+- Remove 'bashbug' from the documentation, because we don't ship it due
+  to biarch concerns.
+
+* Thu Sep  2 2004 Tim Waugh <twaugh@redhat.com> 3.0-11
+- Fixed multibyte parameter length expansion.
+
+* Tue Aug 31 2004 Tim Waugh <twaugh@redhat.com> 3.0-9
+- Fix ulimits patch from Ulrich Drepper (bug #129800).
+
+* Fri Aug 27 2004 Tim Waugh <twaugh@redhat.com> 3.0-8
+- Provide support for new limits (bug #129800).
+
+* Thu Aug 26 2004 Tim Waugh <twaugh@redhat.com> 3.0-7
+- Use upstream patch for last fix.
+
+* Thu Aug 26 2004 Tim Waugh <twaugh@redhat.com> 3.0-6
+- Fixed history saved-line handling.
+
+* Tue Aug 24 2004 Tim Waugh <twaugh@redhat.com>
+- Fixed multibyte IFS handling.
+
+* Wed Aug 18 2004 Tim Waugh <twaugh@redhat.com>
+- Applied bug-bash list patch to fix pipefail.
+
+* Tue Aug 17 2004 Tim Waugh <twaugh@redhat.com> 3.0-5
+- Make trap usage string show POSIX usage (bug #128938).
+- Updated ${x[@]:1} expansion fix from bug-bash list.
+- Updated patch to fix unset array crash (from bug-bash list).
+
+* Sun Aug 15 2004 Tim Waugh <twaugh@redhat.com>
+- Fix ${x[@]:1} expansion (William Park, bug-bash list).
+
+* Tue Aug 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-4
+- Fix vi-change-char behaviour at EOL (bug #129526).
+
+* Mon Aug  9 2004 Tim Waugh <twaugh@redhat.com> 3.0-3
+- Applied bug-bash list patch to fix multiline PS1 prompting (bug #129382).
+
+* Wed Aug  4 2004 Tim Waugh <twaugh@redhat.com> 3.0-2
+- Fixed brace expansion (bug #129128).
+- Build with AFS support again, since bug #86514 seems fixed upstream
+  (bug #129094).
+
+* Tue Aug  3 2004 Tim Waugh <twaugh@redhat.com>
+- Fixed crash when unsetting an unset array (from bug-bash list).
+
+* Wed Jul 28 2004 Tim Waugh <twaugh@redhat.com> 3.0-1
+- 3.0.
+
+* Wed Jul 21 2004 Tim Waugh <twaugh@redhat.com> 2.05b-44
+- Don't report SIGPIPE errors (bug #128274).
+
+* Thu Jul  8 2004 Tim Waugh <twaugh@redhat.com> 2.05b-43
+- Fixed command substitution problem (bug #127242).
+
+* Mon Jun 28 2004 Tim Waugh <twaugh@redhat.com> 2.05b-42
+- Fixed multibyte variable substitution patch (bug #126399).
+
+* Thu Jun 17 2004 Karsten Hopp <karsten@redhat.de> 2.05b-41 
+- remove bashbug script/docs to avoid conflicting files in
+  biarch installs.
+
+* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Fri Jun  4 2004 Tim Waugh <twaugh@redhat.com>
+- Build requires bison (bug #125307).
+
+* Wed Jun  2 2004 Tim Waugh <twaugh@redhat.com> 2.05b-39
+- Build requires libtermcap-devel (bug #125068).
+
+* Wed May 19 2004 Tim Waugh <twaugh@redhat.com>
+- Don't ship empty %%{_libdir}/bash (bug #123556).
+
+* Thu Mar 11 2004 Tim Waugh <twaugh@redhat.com> 2.05b-38
+- Apply patch from Nalin Dahyabhai fixing an overread.
+
+* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Thu Jan 22 2004 Tim Waugh <twaugh@redhat.com> 2.05b-36
+- Fix the bug causing bindings to need reparsing .inputrc (bug #114101).
+
+* Mon Jan  5 2004 Tim Waugh <twaugh@redhat.com> 2.05b-35
+- Fix parameter expansion in multibyte locales (bug #112657).
+- Run 'make check'.
+
+* Tue Dec  9 2003 Tim Waugh <twaugh@redhat.com> 2.05b-34
+- Build requires texinfo (bug #111171).
+
+* Fri Nov 28 2003 Tim Waugh <twaugh@redhat.com> 2.05b-33
+- Speed up UTF-8 command-line redrawing in the common case (bug #102353,
+  bug #110777).
+
+* Thu Nov  6 2003 Tim Waugh <twaugh@redhat.com> 2.05b-32
+- Apply upstream patches (bug #109269 among others).
+
+* Fri Oct 31 2003 Tim Waugh <twaugh@redhat.com>
+- Fix bash.info (bug #83776).
+
+* Tue Oct 28 2003 Tim Waugh <twaugh@redhat.com> 2.05b-31
+- Add bash205b-007 patch to fix bug #106876.
+
+* Thu Oct 23 2003 Tim Waugh <twaugh@redhat.com> 2.05b-30
+- Rebuilt.
+
+* Thu Sep 18 2003 Tim Waugh <twaugh@redhat.com> 2.05b-29.1
+- Rebuilt.
+
+* Thu Sep 18 2003 Tim Waugh <twaugh@redhat.com> 2.05b-29
+- Avoid crashing on multibyte input when locale is set incorrectly
+  (bug #74266).
+
+* Fri Sep  5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-28.1
+- Rebuilt.
+
+* Fri Sep  5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-28
+- Avoid built-in malloc implementation (bug #103768).
+
+* Wed Sep  3 2003 Tim Waugh <twaugh@redhat.com> 2.05b-27.1
+- Rebuilt.
+
+* Wed Sep  3 2003 Tim Waugh <twaugh@redhat.com> 2.05b-27
+- LFS support (bug #103627).
+
+* Thu Jul 31 2003 Tim Waugh <twaugh@redhat.com> 2.05b-26.1
+- Rebuilt.
+
+* Thu Jul 31 2003 Tim Waugh <twaugh@redhat.com> 2.05b-26
+- Merge bash-doc into main package (bug #100632).
+
+* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> 2.05b-25
+- rebuilt
+
+* Mon May 12 2003 Tim Waugh <twaugh@redhat.com> 2.05b-24
+- Fix completion display when multibyte or control characters are to be
+  shown (bug #90201).
+
+* Wed Mar 26 2003 Tim Waugh <twaugh@redhat.com> 2.05b-23
+- Fix a warning message (bug #79629).
+- Don't remove generated source during build, for debuginfo package.
+- Don't build with AFS support (bug #86514).
+
+* Tue Mar 25 2003 Tim Waugh <twaugh@redhat.com> 2.05b-22
+- Really fix bug #78455.
+
+* Tue Mar 11 2003 Tim Waugh <twaugh@redhat.com> 2.05b-21
+- Don't explicitly strip binaries (bug #85995).
+
+* Tue Feb 11 2003 Tim Waugh <twaugh@redhat.com> 2.05b-20
+- Really fix bug #83331 for good.
+
+* Mon Feb 10 2003 Tim Waugh <twaugh@redhat.com> 2.05b-19
+- Fix builtins.1.
+
+* Fri Feb  7 2003 Tim Waugh <twaugh@redhat.com> 2.05b-18
+- Actually apply the patch (bug #83331).
+
+* Wed Feb  5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-17
+- Fix history/UTF-8 bug (bug #83331).
+
+* Sun Jan 26 2003 Tim Waugh <twaugh@redhat.com> 2.05b-16
+- More tab-completion fixing (bug #72512).
+
+* Wed Jan 22 2003 Tim Powers <timp@redhat.com> 2.05b-15
+- rebuilt
+
+* Wed Jan 15 2003 Tim Waugh <twaugh@redhat.com> 2.05b-14
+- Force pgrp synchronization (bug #81653).
+
+* Thu Dec 05 2002 Elliot Lee <sopwith@redhat.com> 2.05b-13
+- (patch26) Don't call 'size' in makefile. Pointless, and interferes with 
+  cross compiles.
+
+* Tue Dec  3 2002 Tim Waugh <twaugh@redhat.com> 2.05b-12
+- Prevent prompt overwriting output (bug #74383).
+
+* Wed Nov 27 2002 Tim Waugh <twaugh@redhat.com> 2.05b-11
+- Fix '-rbash' (bug #78455).
+
+* Thu Nov 21 2002 Tim Waugh <twaugh@redhat.com> 2.05b-10
+- Rebuild.
+
+* Wed Nov 20 2002 Elliot Lee <sopwith@redhat.com>
+- Use the configure macro instead of calling ./configure directly
+
+* Wed Nov 13 2002 Tim Waugh <twaugh@redhat.com>
+- Revert previous change.
+
+* Wed Nov 13 2002 Tim Waugh <twaugh@redhat.com> 2.05b-8
+- PreReq libtermcap.
+
+* Fri Oct 18 2002 Tim Waugh <twaugh@redhat.com> 2.05b-7
+- Add readline-init patch (bug #74925).
+
+* Wed Oct 16 2002 Tim Waugh <twaugh@redhat.com> 2.05b-6
+- Add the (4) patches from ftp.gnu.org (bug #75888, bug #72512).
+- Ship '.' man page, which doesn't get picked up by glob.
+- Don't install files not shipped when building.
+- Locale shell variables fix (bug #74701).
+
+* Fri Aug 23 2002 Tim Powers <timp@redhat.com> 2.05b-5
+- re-bzip the docs, something was corrupted
+
+* Thu Aug 22 2002 Tim Waugh <twaugh@redhat.com> 2.05b-4
+- Fix history substitution modifiers in UTF-8 (bug #70294, bug #71186).
+- Fix ADVANCE_CHAR at end of string (bug #70819).
+- docs: CWRU/POSIX.NOTES no longer exists, but ship POSIX.
+
+* Wed Aug 07 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-3
+- Fixed out of memory problem with readline.
+
+* Tue Jul 23 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-2
+- Added symlink for sh.1 in man1 section so that man sh works (#44039).
+
+* Mon Jul 22 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-1
+- Update to 2.05b
+
+* Wed Jul 10 2002 Phil Knirsch <pknirsch@redhat.com> 2.05a-16
+- Fixed readline utf8 problem (#68313).
+
+* Fri Jun 21 2002 Tim Powers <timp@redhat.com> 2.05a-15
+- automated rebuild
+
+* Thu May 23 2002 Tim Powers <timp@redhat.com> 2.05a-14
+- automated rebuild
+
+* Fri Apr 12 2002 Tim Powers <timp@redhat.com> 2.05a-13
+- don't build the stuff in examples/loadables. It breaks FHS
+  compliance
+
+* Fri Apr  5 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-12
+- Fix the fix for #62418
+
+* Thu Apr  4 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-11
+- Fix kill builtin (#62418)
+
+* Mon Mar 25 2002 Trond Eivind Glomsrød <teg@redhat.com> 2.0.5a-10
+- Get rid of completion subpackage
+- Use %%{_tmppath}
+
+* Mon Mar 11 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-9
+- Add patch from Ulrich Drepper to get better error messages when trying
+  to launch an application with a bad ELF interpreter (e.g. libc5 ld.so)
+  (#60870)
+
+* Fri Feb 22 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-8
+- Update completion
+
+* Wed Jan 30 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-7
+- Update completion stuff and move it to a separate package
+
+* Sat Jan 26 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-6
+- Add patches from Ian Macdonald <ian@caliban.org>
+
+* Wed Jan 23 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-5
+- Add programmable completion (optional)
+
+* Thu Jan 17 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-4
+- Fix mailcheck (#57792)
+
+* Tue Jan 15 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-3
+- Fix autoconf mess
+- Build --with-afs, some users may be using it
+
+* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Thu Nov 22 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-2
+- Fix conflict with sh-utils (printf builtin manpage vs. printf binary manpage)
+  (#56590)
+
+* Tue Nov 20 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-1
+- 2.05a
+
+* Wed Oct 10 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- disable s390x fix, not needed anymore
+
+* Mon Oct  1 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-9
+- Add patch from readline 4.2-3 to bash's internal libreadline
+
+* Mon Jul  9 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-8
+- Merge Pekka Savola's patch (RFE#47762)
+
+* Mon Jul  2 2001 Pekka Savola <pekkas@netcore.fi>
+- Add IPv6 patch from PLD (only redirection to /dev/{tcp,udp}/host/port
+  support)
+
+* Sun Jun 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-7
+- Add some bugfix patches from the maintainer
+
+* Mon Jun 11 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- added patch for s390x from <oliver.paukstadt@millenux.com>
+
+* Wed May 23 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-5
+- Don't set BASH_ENV in .bash_profile, it causes .bashrc to be sourced
+  twice in interactive non-login shells.
+- s/Copyright/License/
+
+* Sat May  5 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-4
+- Fix tempfile creation in bashbug
+
+* Wed May  2 2001 Preston Brown <pbrown@redhat.com> 2.05-3
+- bashrc moved to setup package
+
+* Tue Apr 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-2
+- bash comes with its own copy of readline... Add the patches we're
+  applying in the readline package.
+
+* Tue Apr 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-1
+- Update to 2.05
+- Change PROMPT_COMMAND in bashrc for xterms
+  to something less space consuming (#24159)
+- Provide plugs for alternate prompt commands (#30634), but don't
+  default to them
+
+* Mon Mar 19 2001 Preston Brown <pbrown@redhat.com>
+- add default aliases for 'dir' and 'df' to have human readable output
+
+* Wed Feb 28 2001 Matt Wilson <msw@redhat.com>
+- don't Prereq: /sbin/install-info!
+
+* Tue Feb 27 2001 Preston Brown <pbrown@redhat.com>
+- noreplace config files
+- don't own /etc/skel directory
+
+* Thu Feb 22 2001 Harald Hoyer <harald@redhat.de>
+- changed /etc/bashrc to work with backspace = 0177 (rxvt)
+
+* Wed Feb 07 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- changed /etc/skel/.bash_profile to "unset USERNAME"
+
+* Mon Feb  5 2001 Yukihiro Nakai <ynakai@redhat.com>
+- Delete Japanese resources from dot-bashrc
+  and move them to each package.
+
+* Fri Dec 15 2000 Yukihiro Nakai <ynakai@redhat.com>
+- Add Japanese resource to dot-bashrc
+
+* Mon Dec 11 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- rebuild to get rid of 0777 doc dirs
+
+* Thu Nov 16 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- restore the ^Hs in documentation, they're highlighting sequences
+  for less (#20654) 
+
+* Fri Sep 15 2000 Florian La Roche <Florian.LaRoche@redhat.de>
+- bash-2.04-export.patch is reported to fix compilation
+  of older glibc-2.1 sources
+
+* Tue Aug 22 2000 Matt Wilson <msw@redhat.com>
+- fixed the summary of bash-doc to use %%{version} instead of "2.03"
+
+* Tue Aug  8 2000 Bill Nottingham <notting@redhat.com>
+- 'exit' in bashrc is very bad.
+
+* Tue Aug  8 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- minor bashrc fix (Bug #8518)
+
+* Mon Jul 17 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- Don't use tput etc. in bashrc if /usr isn't available (Bug #14116)
+
+* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
+- automatic rebuild
+
+* Thu Jun 22 2000 Bill Nottingham <notting@redhat.com>
+- fix for some IA-64 issues from Stephane Eranian
+
+* Thu Jun 15 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- Fix summary and description, they had old version numbers (Bug #12092)
+
+* Tue Jun  6 2000 Bill Nottingham <notting@redhat.com>
+- add /etc/skel/.bash* ; obsolete etcskel
+
+* Tue May  2 2000 Bill Nottingham <notting@redhat.com>
+- fix for shell functions on 64-bit architectures...
+
+* Wed Mar 29 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- Add some backwards compatibility (for i in ; do something; done)
+
+* Tue Mar 21 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- 2.04 final
+- remove the echo, pwd, test and kill man pages from the package,
+  we're getting them from sh-utils
+
+* Sun Mar 19 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- 2.04beta5
+- adapt patches
+- Fix up bashrc
+- Don't put in bashrc1, this should be done by the bash1 package
+- use install -c instead of plain install to work on *BSD
+- remove the collected patches - they're now in the base version.
+- make compressed man pages optional
+
+* Thu Mar 16 2000 Florian La Roche <Florian.LaRoche@redhat.com>
+- add some collected patches for bash2
+- change it over to be the main bash package
+- install man-pages root:root
+- obsolete bash2, bash2-doc
+
+* Wed Feb 02 2000 Cristian Gafton <gafton@redhat.com>
+- man pages are compressed
+- fix description
+
+* Thu Dec  2 1999 Ken Estes <kestes@staff.mail.com>
+- updated patch to detect what executables are required by a script.
+
+* Tue Sep 14 1999 Dale Lovelace <dale@redhat.com>
+- Remove annoying ^H's from documentation
+
+* Fri Jul 16 1999 Ken Estes <kestes@staff.mail.com>
+- patch to detect what executables are required by a script.
+
+* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> 
+- auto rebuild in the new build environment (release 4)
+
+* Fri Mar 19 1999 Jeff Johnson <jbj@redhat.com>
+- strip binaries.
+- include bash-doc correctly.
+
+* Thu Mar 18 1999 Preston Brown <pbrown@redhat.com>
+- fixed post/postun /etc/shells work.
+
+* Thu Mar 18 1999 Cristian Gafton <gafton@redhat.com>
+- updated again text in the spec file
+
+* Mon Feb 22 1999 Jeff Johnson <jbj@redhat.com>
+- updated text in spec file.
+- update to 2.03.
+
+* Fri Feb 12 1999 Cristian Gafton <gafton@redhat.com>
+- build it as bash2 instead of bash
+
+* Tue Feb  9 1999 Bill Nottingham <notting@redhat.com>
+- set 'NON_INTERACTIVE_LOGIN_SHELLS' so profile gets read
+
+* Thu Jan 14 1999 Jeff Johnson <jbj@redhat.com>
+- rename man pages in bash-doc to avoid packaging conflicts (#606).
+
+* Wed Dec 02 1998 Cristian Gafton <gafton@redhat.com>
+- patch for the arm
+- use $RPM_ARCH-redhat-linux as the build target
+
+* Tue Oct  6 1998 Bill Nottingham <notting@redhat.com>
+- rewrite %%pre, axe %%postun (to avoid prereq loops)
+
+* Wed Aug 19 1998 Jeff Johnson <jbj@redhat.com>
+- resurrect for RH 6.0.
+
+* Sun Jul 26 1998 Jeff Johnson <jbj@redhat.com>
+- update to 2.02.1
+
+* Thu Jun 11 1998 Jeff Johnson <jbj@redhat.com>
+- Package for 5.2.
+
+* Mon Apr 20 1998 Ian Macdonald <ianmacd@xs4all.nl>
+- added POSIX.NOTES doc file
+- some extraneous doc files removed
+- minor .spec file changes
+
+* Sun Apr 19 1998 Ian Macdonald <ianmacd@xs4all.nl>
+- upgraded to version 2.02
+- Alpha, MIPS & Sparc patches removed due to lack of test platforms
+- glibc & signal patches no longer required
+- added documentation subpackage (doc)
+
+* Fri Nov 07 1997 Donnie Barnes <djb@redhat.com>
+- added signal handling patch from Dean Gaudet <dgaudet@arctic.org> that
+  is based on a change made in bash 2.0.  Should fix some early exit
+  problems with suspends and fg.
+
+* Mon Oct 20 1997 Donnie Barnes <djb@redhat.com>
+- added %%clean
+
+* Mon Oct 20 1997 Erik Troan <ewt@redhat.com>
+- added comment explaining why install-info isn't used
+- added mips patch 
+
+* Fri Oct 17 1997 Donnie Barnes <djb@redhat.com>
+- added BuildRoot
+
+* Tue Jun 03 1997 Erik Troan <ewt@redhat.com>
+- built against glibc