diff --git a/.bash.metadata b/.bash.metadata
new file mode 100644
index 0000000..ad10b79
--- /dev/null
+++ b/.bash.metadata
@@ -0,0 +1 @@
+487840ab7134eb7901fbb2e49b0ee3d22de15cb8 SOURCES/bash-4.2.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..98d3d44
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/bash-4.2.tar.gz
diff --git a/README.md b/README.md
deleted file mode 100644
index 0e7897f..0000000
--- a/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-The master branch has no content
- 
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
- 
-If you find this file in a distro specific branch, it means that no content has been checked in yet
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..735a381
--- /dev/null
+++ b/SOURCES/bash-2.03-paths.patch
@@ -0,0 +1,30 @@
+--- bash-3.0/config.h.in.paths	2004-07-21 21:08:31.000000000 +0100
++++ bash-3.0/config.h.in	2004-07-28 09:16:27.257884999 +0100
+@@ -197,7 +197,7 @@
+ 
+ /* System paths */
+ 
+-#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail"
++#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
+ 
+ /* Characteristics of the system's header files and libraries that affect
+    the compilation environment. */
+--- 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
+@@ -52,14 +52,14 @@
+ /* The default value of the PATH variable. */
+ #ifndef DEFAULT_PATH_VALUE
+ #define DEFAULT_PATH_VALUE \
+-  "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
++  "/usr/local/bin:/bin:/usr/bin"
+ #endif
+ 
+ /* The value for PATH when invoking `command -p'.  This is only used when
+    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..6957eec
--- /dev/null
+++ b/SOURCES/bash-2.05a-interpreter.patch
@@ -0,0 +1,218 @@
+diff -up bash-4.2-rc2/config.h.in.interpreter bash-4.2-rc2/config.h.in
+--- bash-4.2-rc2/config.h.in.interpreter	2011-02-09 07:59:21.000000000 +0100
++++ bash-4.2-rc2/config.h.in	2011-02-09 07:59:21.000000000 +0100
+@@ -706,6 +706,9 @@
+ /* Define if you have the pathconf function. */
+ #undef HAVE_PATHCONF
+ 
++/* Define if you have the pread function. */
++#undef HAVE_PREAD
++
+ /* Define if you have the putenv function.  */
+ #undef HAVE_PUTENV
+ 
+@@ -898,6 +901,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 -up bash-4.2-rc2/configure.in.interpreter bash-4.2-rc2/configure.in
+--- bash-4.2-rc2/configure.in.interpreter	2011-01-16 21:31:12.000000000 +0100
++++ bash-4.2-rc2/configure.in	2011-02-09 08:02:27.000000000 +0100
+@@ -659,7 +659,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 \
+ 		 stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h \
+-		 syslog.h ulimit.h)
++		 syslog.h ulimit.h elf.h)
+ AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
+ 		 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
+ 		 sys/time.h sys/times.h sys/types.h sys/wait.h)
+@@ -723,7 +723,7 @@ dnl checks for system calls
+ AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
+ 		getpagesize getpeername getrlimit getrusage gettimeofday \
+ 		kill killpg lstat 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 -up bash-4.2-rc2/execute_cmd.c.interpreter bash-4.2-rc2/execute_cmd.c
+--- bash-4.2-rc2/execute_cmd.c.interpreter	2011-01-20 04:24:47.000000000 +0100
++++ bash-4.2-rc2/execute_cmd.c	2011-02-09 07:59:21.000000000 +0100
+@@ -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)
+@@ -4975,13 +4979,21 @@ 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 > 2 && sample[0] == '#' && sample[1] == '!')
+ 	    {
+ 	      char *interp;
+ 	      int ilen;
+ 
++	      close (fd);
+ 	      interp = getinterp (sample, sample_len, (int *)NULL);
+ 	      ilen = strlen (interp);
+ 	      errno = i;
+@@ -4997,6 +5009,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);
+ 	}
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-readline-oom.patch b/SOURCES/bash-2.05b-readline-oom.patch
new file mode 100644
index 0000000..8c1f231
--- /dev/null
+++ b/SOURCES/bash-2.05b-readline-oom.patch
@@ -0,0 +1,11 @@
+--- bash-2.05b/lib/readline/readline.c.oom	2002-03-13 23:10:46.000000000 +0100
++++ bash-2.05b/lib/readline/readline.c	2002-08-07 12:02:04.000000000 +0200
+@@ -567,7 +567,7 @@
+ 	{
+ 	  /* Special case rl_do_lowercase_version (). */
+ 	  if (func == rl_do_lowercase_version)
+-	    return (_rl_dispatch (_rl_to_lower (key), map));
++	    return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
+ 
+ 	  rl_executing_keymap = map;
+ 
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..80eccfe
--- /dev/null
+++ b/SOURCES/bash-3.2-audit.patch
@@ -0,0 +1,108 @@
+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.in	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 *
+@@ -352,6 +399,11 @@ readline (prompt)
+     RL_SETSTATE (RL_STATE_CALLBACK);
+ #endif
+ 
++#if defined (HAVE_DECL_AUDIT_USER_TTY)
++  if (value != NULL)
++    audit_tty (value);
++#endif
++
+   return (value);
+ }
+ 
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..8ff26af
--- /dev/null
+++ b/SOURCES/bash-4.1-defer-sigchld-trap.patch
@@ -0,0 +1,30 @@
+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)
+   PROCESS *child;
+   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;
+@@ -3161,7 +3162,17 @@ waitchld (wpid, block)
+ 	  longjmp (wait_intr_buf, 1);
+ 	}
+ 
+-      run_sigchld_trap (children_exited);
++      /* Queue up the trap handler if we're called directly from within the
++         signal handler. */
++      if (called_from_sighand)
++	{
++	  int i = children_exited;
++	  interrupt_immediately = 0;
++	  while (i--)
++	    trap_handler (SIGCHLD);
++	}
++      else
++	run_sigchld_trap (children_exited);
+     }
+ 
+   /* We have successfully recorded the useful information about this process
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.1-trap.patch b/SOURCES/bash-4.1-trap.patch
new file mode 100644
index 0000000..ae3a6b3
--- /dev/null
+++ b/SOURCES/bash-4.1-trap.patch
@@ -0,0 +1,46 @@
+Only in bash-4.1: _patchlevel
+diff -rup bash-4.1.orig/trap.c bash-4.1/trap.c
+--- bash-4.1.orig/trap.c	2013-05-14 13:58:06.224000564 +0900
++++ bash-4.1/trap.c	2013-06-26 16:59:42.968001502 +0900
+@@ -269,6 +269,9 @@ run_pending_traps ()
+   if (catch_flag == 0)		/* simple optimization */
+     return;
+ 
++  if (running_trap > 0)
++    return;			/* no recursive trap invocations */
++
+   catch_flag = 0;
+ 
+   /* Preserve $? when running trap. */
+@@ -294,6 +297,8 @@ run_pending_traps ()
+ #  endif
+ #endif /* HAVE_POSIX_SIGNALS */
+ 
++	  running_trap = sig + 1;
++
+ 	  if (sig == SIGINT)
+ 	    {
+ 	      run_interrupt_trap ();
+@@ -338,7 +343,14 @@ run_pending_traps ()
+ 	      save_subst_varlist = subst_assign_varlist;
+ 	      subst_assign_varlist = 0;
+ 
++#if defined (JOB_CONTROL)
++	      save_pipeline (1);        /* XXX only provides one save level */
++#endif
+ 	      parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
++#if defined (JOB_CONTROL)
++	      restore_pipeline (1);
++#endif
++
+ 	      restore_token_state (token_state);
+ 	      free (token_state);
+ 
+@@ -346,6 +358,7 @@ run_pending_traps ()
+ 	    }
+ 
+ 	  pending_traps[sig] = 0;
++	  running_trap = 0;
+ 
+ #if defined (HAVE_POSIX_SIGNALS)
+ 	  sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
diff --git a/SOURCES/bash-4.2-brace-expand.patch b/SOURCES/bash-4.2-brace-expand.patch
new file mode 100644
index 0000000..e723956
--- /dev/null
+++ b/SOURCES/bash-4.2-brace-expand.patch
@@ -0,0 +1,24 @@
+diff --git a/braces.c b/braces.c
+index 2febed7..61c1ab1 100644
+--- a/braces.c
++++ b/braces.c
+@@ -529,6 +529,11 @@ brace_gobbler (text, tlen, indx, satisfy)
+	{
+	  if (c == quoted)
+	    quoted = 0;
++#if defined (SHELL)
++         /* The shell allows quoted command substitutions */
++         if (quoted == '"' && c == '$' && text[i+1] == '(')    /*)*/
++           goto comsub;
++#endif
+	  ADVANCE_CHAR (text, tlen, i);
+	  continue;
+	}
+@@ -551,6 +556,7 @@ brace_gobbler (text, tlen, indx, satisfy)
+       /* Pass new-style command and process substitutions through unchanged. */
+       if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(')			/* ) */
+	{
++comsub:
+	  si = i + 2;
+	  t = extract_command_subst (text, &si, 0);
+	  i = si;
diff --git a/SOURCES/bash-4.2-case-in-command-subst.patch b/SOURCES/bash-4.2-case-in-command-subst.patch
new file mode 100644
index 0000000..4df6353
--- /dev/null
+++ b/SOURCES/bash-4.2-case-in-command-subst.patch
@@ -0,0 +1,21 @@
+diff -up bash-4.2/parse.y.old bash-4.2/parse.y
+--- bash-4.2/parse.y.old	2015-05-18 13:04:30.341494305 +0200
++++ bash-4.2/parse.y	2015-05-18 13:05:18.245509202 +0200
+@@ -3693,6 +3693,17 @@ eof_error:
+ 	    }
+ 	  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 */
++	  /* Allow `do' followed by space, tab, or newline to preserve the
++	     RESWDOK flag, but reset the reserved word length counter so we
++	     can read another one. */
++	  else if MBTEST(((tflags & LEX_INCASE) == 0) &&
++			  (isblank(ch) || ch == '\n') &&
++			  lex_rwlen == 2 &&
++			  STREQN (ret + retind - 2, "do", 2))
++{
++/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', found \"do\"", line_number, ch);*/
++	    lex_rwlen = 0;
++}
+ 	  else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
+ 	    /* If we can read a reserved word and we're in case, we're at the
+ 	       point where we can read a new pattern list or an esac.  We
diff --git a/SOURCES/bash-4.2-check-debugger.patch b/SOURCES/bash-4.2-check-debugger.patch
new file mode 100644
index 0000000..5d8aa61
--- /dev/null
+++ b/SOURCES/bash-4.2-check-debugger.patch
@@ -0,0 +1,87 @@
+diff -up bash-4.2/builtins/evalfile.c.old bash-4.2/builtins/evalfile.c
+--- bash-4.2/builtins/evalfile.c.old	2015-05-14 20:45:31.402793505 +0200
++++ bash-4.2/builtins/evalfile.c	2015-05-14 20:45:47.632794791 +0200
+@@ -317,6 +317,23 @@ maybe_execute_file (fname, force_noninte
+   return result;
+ }
+ 
++int
++force_execute_file (fname, force_noninteractive)
++     const char *fname;
++     int force_noninteractive;
++{
++  char *filename;
++  int result, flags;
++
++  filename = bash_tilde_expand (fname, 0);
++  flags = 0;
++  if (force_noninteractive)
++    flags |= FEVAL_NONINT;
++  result = _evalfile (filename, flags);
++  free (filename);
++  return result;
++}
++
+ #if defined (HISTORY)
+ int
+ fc_execute_file (filename)
+diff -up bash-4.2/configure.in.old bash-4.2/configure.in
+--- bash-4.2/configure.in.old	2015-05-14 21:27:20.882449456 +0200
++++ bash-4.2/configure.in	2015-05-14 21:19:25.654612738 +0200
+@@ -149,7 +149,7 @@ fi
+ fi
+ 
+ if test -z "${DEBUGGER_START_FILE}"; then
+-	DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
++	DEBUGGER_START_FILE='/usr/share/bashdb/bashdb-main.inc'
+ fi
+ 
+ dnl optional shell features in config.h.in
+diff -up bash-4.2/shell.c.old bash-4.2/shell.c
+--- bash-4.2/shell.c.old	2015-05-14 20:42:54.379781066 +0200
++++ bash-4.2/shell.c	2015-05-14 20:43:04.966781904 +0200
+@@ -1373,12 +1373,19 @@ start_debugger ()
+ {
+ #if defined (DEBUGGER) && defined (DEBUGGER_START_FILE)
+   int old_errexit;
++  int r;
+ 
+   old_errexit = exit_immediately_on_error;
+   exit_immediately_on_error = 0;
+ 
+-  maybe_execute_file (DEBUGGER_START_FILE, 1);
+-  function_trace_mode = 1;
++  r = force_execute_file (DEBUGGER_START_FILE, 1);
++  if (r < 0)
++    {
++      internal_warning ("cannot start debugger; debugging mode disabled");
++      debugging_mode = function_trace_mode = 0;
++    }
++  else
++    function_trace_mode = 1;
+ 
+   exit_immediately_on_error += old_errexit;
+ #endif
+diff -up bash-4.2/builtins/evalfile.c.old bash-4.2/builtins/evalfile.c
+--- bash-4.2/builtins/evalfile.c.old	2015-05-15 00:52:01.357266353 +0200
++++ bash-4.2/builtins/evalfile.c	2015-05-15 00:52:08.734263236 +0200
+@@ -125,7 +125,7 @@ file_error_and_exit:
+ 	}
+ 
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE
+-      				      : ((errno == ENOENT) ? 0 : -1));
++      				      : ((errno == ENOENT && (flags & FEVAL_ENOENTOK) != 0) ? 0 : -1));
+     }
+ 
+   errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error);
+diff -up bash-4.2/builtins/common.h.old bash-4.2/builtins/common.h
+--- bash-4.2/builtins/common.h.old	2015-05-15 00:52:01.357266353 +0200
++++ bash-4.2/builtins/common.h	2015-05-15 00:52:08.734263236 +0200
+@@ -170,6 +170,7 @@
+ 
+ /* Functions from evalfile.c */
+ extern int maybe_execute_file __P((const char *, int));
++extern int force_execute_file __P((const char *, int));
+ extern int source_file __P((const char *, int));
+ extern int fc_execute_file __P((const char *));
+ 
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-cve-2014-7169-0.patch b/SOURCES/bash-4.2-cve-2014-7169-0.patch
new file mode 100644
index 0000000..5f59b46
--- /dev/null
+++ b/SOURCES/bash-4.2-cve-2014-7169-0.patch
@@ -0,0 +1,12 @@
+*** ../bash-20140912/parse.y	2014-08-26 15:09:42.000000000 -0400
+--- parse.y	2014-09-24 22:47:28.000000000 -0400
+***************
+*** 2959,2962 ****
+--- 2959,2964 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';		/* XXX */
+    last_read_token = '\n';
+
diff --git a/SOURCES/bash-4.2-cve-2014-7169-1.patch b/SOURCES/bash-4.2-cve-2014-7169-1.patch
new file mode 100644
index 0000000..1b46dd4
--- /dev/null
+++ b/SOURCES/bash-4.2-cve-2014-7169-1.patch
@@ -0,0 +1,147 @@
+--- ../bash-4.2-orig/variables.c	2014-09-25 13:07:59.313209541 +0200
++++ variables.c	2014-09-25 13:15:29.869420719 +0200
+@@ -268,7 +268,7 @@
+ static void propagate_temp_var __P((PTR_T));
+ static void dispose_temporary_env __P((sh_free_func_t *));     
+ 
+-static inline char *mk_env_string __P((const char *, const char *));
++static inline char *mk_env_string __P((const char *, const char *, int));
+ static char **make_env_array_from_var_list __P((SHELL_VAR **));
+ static char **make_var_export_array __P((VAR_CONTEXT *));
+ static char **make_func_export_array __P((void));
+@@ -301,6 +301,14 @@
+ #endif
+ }
+ 
++/* Prefix and suffix for environment variable names which contain
++   shell functions. */
++#define FUNCDEF_PREFIX "BASH_FUNC_"
++#define FUNCDEF_PREFIX_LEN (strlen (FUNCDEF_PREFIX))
++#define FUNCDEF_SUFFIX "()"
++#define FUNCDEF_SUFFIX_LEN (strlen (FUNCDEF_SUFFIX))
++
++
+ /* Initialize the shell variables from the current environment.
+    If PRIVMODE is nonzero, don't import functions from ENV or
+    parse $SHELLOPTS. */
+@@ -338,28 +346,40 @@
+ 
+       /* If exported function, define it now.  Don't import functions from
+ 	 the environment in privileged mode. */
+-      if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
+-	{
+-	  string_length = strlen (string);
+-	  temp_string = (char *)xmalloc (3 + string_length + char_index);
++      if (privmode == 0 && read_but_dont_execute == 0
++	  && STREQN (FUNCDEF_PREFIX, name, FUNCDEF_PREFIX_LEN)
++	  && STREQ (name + char_index - FUNCDEF_SUFFIX_LEN, FUNCDEF_SUFFIX)
++	  && STREQN ("() {", string, 4))
++	{
++	  size_t name_length
++	    = char_index - (FUNCDEF_PREFIX_LEN + FUNCDEF_SUFFIX_LEN);
++	  char *temp_name = name + FUNCDEF_PREFIX_LEN;
++	  /* Temporarily remove the suffix. */
++	  temp_name[name_length] = '\0';
+ 
+-	  strcpy (temp_string, name);
+-	  temp_string[char_index] = ' ';
+-	  strcpy (temp_string + char_index + 1, string);
++	  string_length = strlen (string);
++	  temp_string = (char *)xmalloc (name_length + 1 + string_length + 1);
++	  memcpy (temp_string, temp_name, name_length);
++	  temp_string[name_length] = ' ';
++	  memcpy (temp_string + name_length + 1, string, string_length + 1);
+ 
+ 	  /* Don't import function names that are invalid identifiers from the
+ 	     environment, though we still allow them to be defined as shell
+	     variables. */
+-	  if (legal_identifier (name))
+-	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
++	  if (legal_identifier (temp_name))
++	    parse_and_execute (temp_string, temp_name,
++			       SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+ 
+-	  if (temp_var = find_function (name))
++	  if (temp_var = find_function (temp_name))
+ 	    {
+ 	      VSETATTR (temp_var, (att_exported|att_imported));
+ 	      array_needs_making = 1;
+ 	    }
+ 	  else
+ 	    report_error (_("error importing function definition for `%s'"), name);
++
++	  /* Restore the original suffix. */
++	  temp_name[name_length] = FUNCDEF_SUFFIX[0];
+ 	}
+ #if defined (ARRAY_VARS)
+ #  if 0
+@@ -2537,7 +2557,7 @@
+   var->context = variable_context;	/* XXX */
+ 
+   INVALIDATE_EXPORTSTR (var);
+-  var->exportstr = mk_env_string (name, value);
++  var->exportstr = mk_env_string (name, value, 0);
+ 
+   array_needs_making = 1;
+ 
+@@ -3388,22 +3408,43 @@
+ /*								    */
+ /* **************************************************************** */
+ 
++/* Returns the string NAME=VALUE if !FUNCTIONP or if VALUE == NULL (in
++   which case it is treated as empty).  Otherwise, decorate NAME with
++   FUNCDEF_PREFIX and FUNCDEF_SUFFIX, and return a string of the form
++   FUNCDEF_PREFIX NAME FUNCDEF_SUFFIX = VALUE (without spaces).  */
+ static inline char *
+-mk_env_string (name, value)
++mk_env_string (name, value, functionp)
+      const char *name, *value;
++     int functionp;
+ {
+-  int name_len, value_len;
+-  char	*p;
++  size_t name_len, value_len;
++  char *p, *q;
+ 
+   name_len = strlen (name);
+   value_len = STRLEN (value);
+-  p = (char *)xmalloc (2 + name_len + value_len);
+-  strcpy (p, name);
+-  p[name_len] = '=';
++  if (functionp && value != NULL)
++    {
++      p = (char *)xmalloc (FUNCDEF_PREFIX_LEN + name_len + FUNCDEF_SUFFIX_LEN
++			   + 1 + value_len + 1);
++      q = p;
++      memcpy (q, FUNCDEF_PREFIX, FUNCDEF_PREFIX_LEN);
++      q += FUNCDEF_PREFIX_LEN;
++      memcpy (q, name, name_len);
++      q += name_len;
++      memcpy (q, FUNCDEF_SUFFIX, FUNCDEF_SUFFIX_LEN);
++      q += FUNCDEF_SUFFIX_LEN;
++    }
++  else
++    {
++      p = (char *)xmalloc (name_len + 1 + value_len + 1);
++      memcpy (p, name, name_len);
++      q = p + name_len;
++    }
++  q[0] = '=';
+   if (value && *value)
+-    strcpy (p + name_len + 1, value);
++    memcpy (q + 1, value, value_len + 1);
+   else
+-    p[name_len + 1] = '\0';
++    q[1] = '\0';
+   return (p);
+ }
+ 
+@@ -3489,7 +3530,7 @@
+ 	  /* Gee, I'd like to get away with not using savestring() if we're
+ 	     using the cached exportstr... */
+ 	  list[list_index] = USE_EXPORTSTR ? savestring (value)
+-					   : mk_env_string (var->name, value);
++	    : mk_env_string (var->name, value, function_p (var));
+ 
+ 	  if (USE_EXPORTSTR == 0)
+ 	    SAVE_EXPORTSTR (var, list[list_index]);
diff --git a/SOURCES/bash-4.2-cve-2014-7169-2.patch b/SOURCES/bash-4.2-cve-2014-7169-2.patch
new file mode 100644
index 0000000..3da05bb
--- /dev/null
+++ b/SOURCES/bash-4.2-cve-2014-7169-2.patch
@@ -0,0 +1,83 @@
+--- ../bash-4.2-orig/parse.y	2014-09-25 13:07:59.218209276 +0200
++++ parse.y	2014-09-25 15:26:52.813159810 +0200
+@@ -264,9 +264,21 @@
+ 
+ /* Variables to manage the task of reading here documents, because we need to
+    defer the reading until after a complete command has been collected. */
+-static REDIRECT *redir_stack[10];
++static REDIRECT **redir_stack;
+ int need_here_doc;
+ 
++/* Pushes REDIR onto redir_stack, resizing it as needed. */
++static void
++push_redir_stack (REDIRECT *redir)
++{
++  /* Guard against oveflow. */
++  if (need_here_doc + 1 > INT_MAX / sizeof (*redir_stack))
++    abort ();
++  redir_stack = xrealloc (redir_stack,
++			  (need_here_doc + 1) * sizeof (*redir_stack));
++  redir_stack[need_here_doc++] = redir;
++}
++
+ /* Where shell input comes from.  History expansion is performed on each
+    line when the shell is interactive. */
+ static char *shell_input_line = (char *)NULL;
+@@ -519,42 +531,42 @@
+ 			  source.dest = 0;
+ 			  redir.filename = $2;
+ 			  $$ = make_redirection (source, r_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	NUMBER LESS_LESS WORD
+ 			{
+ 			  source.dest = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	REDIR_WORD LESS_LESS WORD
+ 			{
+ 			  source.filename = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	LESS_LESS_MINUS WORD
+ 			{
+ 			  source.dest = 0;
+ 			  redir.filename = $2;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	NUMBER LESS_LESS_MINUS WORD
+ 			{
+ 			  source.dest = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	REDIR_WORD  LESS_LESS_MINUS WORD
+ 			{
+ 			  source.filename = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	LESS_LESS_LESS WORD
+ 			{
+@@ -4757,7 +4769,7 @@
+     case CASE:
+     case SELECT:
+     case FOR:
+-      if (word_top < MAX_CASE_NEST)
++      if (word_top + 1 < MAX_CASE_NEST)
+ 	word_top++;
+       word_lineno[word_top] = line_number;
+       break;
diff --git a/SOURCES/bash-4.2-double-alloc.patch b/SOURCES/bash-4.2-double-alloc.patch
new file mode 100644
index 0000000..682b591
--- /dev/null
+++ b/SOURCES/bash-4.2-double-alloc.patch
@@ -0,0 +1,11 @@
+--- bash-4.1/subst.c	2015-04-07 10:00:00.482931289 +0900
++++ bash-4.1/subst.c	2015-04-07 10:01:28.258111134 +0900
+@@ -7039,8 +7039,6 @@ 
+ 
+       ret = alloc_word_desc ();
+       ret->word = temp1;
+-      ret = alloc_word_desc ();
+-      ret->word = temp1;
+       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+ 	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+       return ret;
diff --git a/SOURCES/bash-4.2-enable-hyphened-fn-export.patch b/SOURCES/bash-4.2-enable-hyphened-fn-export.patch
new file mode 100644
index 0000000..741e1c9
--- /dev/null
+++ b/SOURCES/bash-4.2-enable-hyphened-fn-export.patch
@@ -0,0 +1,11 @@
+--- variables.cold	2015-01-16 13:53:13.817363093 +0100
++++ variables.c	2015-01-16 13:57:41.839425969 +0100
+@@ -366,7 +366,7 @@ initialize_shell_variables (env, privmod
+ 	  /* Don't import function names that are invalid identifiers from the
+ 	     environment, though we still allow them to be defined as shell
+ 	     variables. */
+-	  if (legal_identifier (temp_name))
++	  if (absolute_program (temp_name) == 0 && (posixly_correct == 0 || legal_identifier (temp_name)))
+ 	    parse_and_execute (temp_string, temp_name,
+ 			       SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+ 
diff --git a/SOURCES/bash-4.2-env-inject.patch b/SOURCES/bash-4.2-env-inject.patch
new file mode 100644
index 0000000..61a88b9
--- /dev/null
+++ b/SOURCES/bash-4.2-env-inject.patch
@@ -0,0 +1,73 @@
+*** ../bash-4.3-patched/builtins/common.h	2013-07-08 16:54:47.000000000 -0400
+--- builtins/common.h	2014-09-12 14:25:47.000000000 -0400
+***************
+*** 34,37 ****
+--- 49,54 ----
+  #define SEVAL_PARSEONLY	0x020
+  #define SEVAL_NOLONGJMP 0x040
++ #define SEVAL_FUNCDEF	0x080		/* only allow function definitions */
++ #define SEVAL_ONECMD	0x100		/* only allow a single command */
+  
+  /* Flags for describe_command, shared between type.def and command.def */
+*** ../bash-4.3-patched/builtins/evalstring.c	2014-02-11 09:42:10.000000000 -0500
+--- builtins/evalstring.c	2014-09-14 14:15:13.000000000 -0400
+***************
+*** 309,312 ****
+--- 313,324 ----
+  	      struct fd_bitmap *bitmap;
+  
++ 	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
++ 		{
++ 		  internal_warning ("%s: ignoring function definition attempt", from_file);
++ 		  should_jump_to_top_level = 0;
++ 		  last_result = last_command_exit_value = EX_BADUSAGE;
++ 		  break;
++ 		}
++ 
+  	      bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
+  	      begin_unwind_frame ("pe_dispose");
+***************
+*** 369,372 ****
+--- 381,387 ----
+  	      dispose_fd_bitmap (bitmap);
+  	      discard_unwind_frame ("pe_dispose");
++ 
++ 	      if (flags & SEVAL_ONECMD)
++ 		break;
+  	    }
+  	}
+*** ../bash-4.3-patched/variables.c	2014-05-15 08:26:50.000000000 -0400
+--- variables.c	2014-09-14 14:23:35.000000000 -0400
+***************
+*** 359,368 ****
+  	  strcpy (temp_string + char_index + 1, string);
+  
+! 	  parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
+! 
+! 	  /* Ancient backwards compatibility.  Old versions of bash exported
+! 	     functions like name()=() {...} */
+! 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
+! 	    name[char_index - 2] = '\0';
+  
+  	  if (temp_var = find_function (name))
+--- 364,372 ----
+  	  strcpy (temp_string + char_index + 1, string);
+  
+! 	  /* Don't import function names that are invalid identifiers from the
+! 	     environment, though we still allow them to be defined as shell
+! 	     variables. */
+! 	  if (legal_identifier (name))
+! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+  
+  	  if (temp_var = find_function (name))
+***************
+*** 362,369 ****
+  	  else
+  	    report_error (_("error importing function definition for `%s'"), name);
+- 
+- 	  /* ( */
+- 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
+- 	    name[char_index - 2] = '(';		/* ) */
+  	}
+  #if defined (ARRAY_VARS)
+--- 360,363 ----
diff --git a/SOURCES/bash-4.2-extglob-man.patch b/SOURCES/bash-4.2-extglob-man.patch
new file mode 100644
index 0000000..295467e
--- /dev/null
+++ b/SOURCES/bash-4.2-extglob-man.patch
@@ -0,0 +1,28 @@
+diff --git a/doc/bash.1 b/doc/bash.1
+--- a/doc/bash.1	2010-07-28 08:42:54.000000000 +0200
++++ b/doc/bash.1	2010-07-28 08:43:17.000000000 +0200
+@@ -3220,8 +3220,7 @@
+ .RE
+ .PD
+ .PP
+-If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
+-builtin, several extended pattern matching operators are recognized.
++Several extended pattern matching operators are recognized.
+ In the following description, a \fIpattern-list\fP is a list of one
+ or more patterns separated by a \fB|\fP.
+ Composite patterns may be formed using one or more of the following
+@@ -3241,6 +3240,14 @@
+ .TP
+ \fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+ Matches one of the given patterns
++.RE
++.PD
++.PP
++If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
++builtin, following pattern matching operator is recognized as well:
++.sp 1
++.PD 0
++.RS
+ .TP
+ \fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+ Matches anything except one of the given patterns
diff --git a/SOURCES/bash-4.2-history-hang.patch b/SOURCES/bash-4.2-history-hang.patch
new file mode 100644
index 0000000..da209c8
--- /dev/null
+++ b/SOURCES/bash-4.2-history-hang.patch
@@ -0,0 +1,11 @@
+--- a/lib/readline/history.c	2014-05-27 16:55:58.040214069 +0200
++++ b/lib/readline/history.c	2014-05-27 16:56:11.243204928 +0200
+@@ -318,7 +318,7 @@ add_history_time (string)
+ {
+   HIST_ENTRY *hs;
+ 
+-  if (string == 0)
++  if (string == 0 || history_length < 1)
+     return;
+   hs = the_history[history_length - 1];
+   FREE (hs->timestamp);
diff --git a/SOURCES/bash-4.2-ifs-in-temp-env.patch b/SOURCES/bash-4.2-ifs-in-temp-env.patch
new file mode 100644
index 0000000..64b99f8
--- /dev/null
+++ b/SOURCES/bash-4.2-ifs-in-temp-env.patch
@@ -0,0 +1,35 @@
+--- bash-4.2/redir.c	2015-04-27 23:03:55.663182162 +0200
++++ bash-4.2/redir.c	2015-04-27 23:03:13.995181816 +0200
+@@ -63,6 +63,7 @@ int expanding_redir;
+ 
+ extern int posixly_correct;
+ extern int last_command_exit_value;
++extern int executing_builtin;
+ extern REDIRECT *redirection_undo_list;
+ extern REDIRECT *exec_redirection_undo_list;
+ 
+@@ -307,11 +308,23 @@ write_here_string (fd, redirectee)
+      WORD_DESC *redirectee;
+ {
+   char *herestr;
+-  int herelen, n, e;
++  int herelen, n, e, old;
+ 
+   expanding_redir = 1;
++  /* Now that we've changed the variable search order to ignore the temp
++     environment, see if we need to change the cached IFS values. */
++  sv_ifs ("IFS");
+   herestr = expand_string_to_string (redirectee->word, 0);
+   expanding_redir = 0;
++  /* Now we need to change the variable search order back to include the temp
++     environment.  We force the temp environment search by forcing
++     executing_builtin to 1.  This is what makes `read' get the right values
++     for the IFS-related cached variables, for example. */
++  old = executing_builtin;
++  executing_builtin = 1;
++  sv_ifs ("IFS");
++  executing_builtin = old;
++
+   herelen = STRLEN (herestr);
+ 
+   n = write (fd, herestr, herelen);
diff --git a/SOURCES/bash-4.2-leak-compound.patch b/SOURCES/bash-4.2-leak-compound.patch
new file mode 100644
index 0000000..a249084
--- /dev/null
+++ b/SOURCES/bash-4.2-leak-compound.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.2/subst.c.old bash-4.2/subst.c
+--- bash-4.2/subst.c.old	2015-12-09 13:24:47.369738319 +0100
++++ bash-4.2/subst.c	2015-12-09 13:28:27.366024824 +0100
+@@ -2713,6 +2713,8 @@ do_compound_assignment (name, value, fla
+       else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context)
+         v = make_local_array_variable (name);
+       assign_compound_array_list (v, list, flags);
++      if (list)
++	dispose_words (list);
+     }
+   else
+     v = assign_array_from_string (name, value, flags);
diff --git a/SOURCES/bash-4.2-man-ulimit.patch b/SOURCES/bash-4.2-man-ulimit.patch
new file mode 100644
index 0000000..fdba544
--- /dev/null
+++ b/SOURCES/bash-4.2-man-ulimit.patch
@@ -0,0 +1,24 @@
+From ccd35766d2451677f4c49f66b8e18ad6e274d56a Mon Sep 17 00:00:00 2001
+From: Jan Chaloupka <jchaloup@redhat.com>
+Date: Mon, 7 Jul 2014 07:15:41 +0200
+Subject: [PATCH] bash.1: posix block size for cf options
+
+---
+ doc/bash.1 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/doc/bash.1 b/doc/bash.1
+index a4ad746..1916515 100644
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -9451,6 +9451,7 @@ and
+ which are unscaled values.
+ 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]
+-- 
+1.9.3
+
diff --git a/SOURCES/bash-4.2-manpage.patch b/SOURCES/bash-4.2-manpage.patch
new file mode 100644
index 0000000..08ae11f
--- /dev/null
+++ b/SOURCES/bash-4.2-manpage.patch
@@ -0,0 +1,53 @@
+diff -up bash-4.2/doc/bash.1.manpage bash-4.2/doc/bash.1
+--- bash-4.2/doc/bash.1.manpage	2011-01-26 15:30:03.000000000 +0100
++++ bash-4.2/doc/bash.1	2011-01-26 15:47:16.000000000 +0100
+@@ -6646,7 +6646,9 @@ must be \(>= 1.  If
+ .I n
+ is greater than the number of enclosing loops, all enclosing loops
+ are exited.
+-The return value is 0 unless \fIn\fP is not greater than or equal to 1.
++The return value is non-zero when \fIn\fP is \(<= 0; Otherwise,
++.BR break
++returns 0 value.
+ .TP
+ \fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+ Execute the specified shell builtin, passing it
+@@ -7017,7 +7019,15 @@ must be \(>= 1.  If
+ .I n
+ is greater than the number of enclosing loops, the last enclosing loop
+ (the ``top-level'' loop) is resumed.
+-The return value is 0 unless \fIn\fP is not greater than or equal to 1.
++When
++.BR continue
++is executed inside of loop, the return value is non-zero when
++.I n
++is \(<= 0; Otherwise,
++.BR continue
++returns 0 value. When
++.BR continue
++is executed outside of loop, the return value is 0.
+ .TP
+ \fBdeclare\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+ .PD 0
+@@ -9019,9 +9029,19 @@ by default.
+ Suspend the execution of this shell until it receives a
+ .SM
+ .B SIGCONT
+-signal.  A login shell cannot be suspended; the
++signal. When the suspended shell is a background process, it can be restarted
++by the
++.B fg
++command. For more information, read the
++.SM
++.B JOB CONTROL
++section. The
++.B suspend
++command can not suspend the login shell. However, when
+ .B \-f
+-option can be used to override this and force the suspension.
++option is specified,
++.B suspend
++command can suspend even login shell.
+ The return status is 0 unless the shell is a login shell and
+ .B \-f
+ is not supplied, or if job control is not enabled.
diff --git a/SOURCES/bash-4.2-manpage_trap.patch b/SOURCES/bash-4.2-manpage_trap.patch
new file mode 100644
index 0000000..6923d25
--- /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 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-missing-opt-cd.patch b/SOURCES/bash-4.2-missing-opt-cd.patch
new file mode 100644
index 0000000..5cf27cc
--- /dev/null
+++ b/SOURCES/bash-4.2-missing-opt-cd.patch
@@ -0,0 +1,12 @@
+diff -up bash-4.2/builtins/cd.def.old bash-4.2/builtins/cd.def
+--- bash-4.2/builtins/cd.def.old	2015-12-09 11:47:59.113106805 +0100
++++ bash-4.2/builtins/cd.def	2015-12-09 11:48:13.702060840 +0100
+@@ -200,7 +200,7 @@ cd_builtin (list)
+   eflag = 0;
+   no_symlinks = no_symbolic_links;
+   reset_internal_getopt ();
+-  while ((opt = internal_getopt (list, "LP")) != -1)
++  while ((opt = internal_getopt (list, "LPe")) != -1)
+     {
+       switch (opt)
+ 	{
diff --git a/SOURCES/bash-4.2-missing_closes.patch b/SOURCES/bash-4.2-missing_closes.patch
new file mode 100644
index 0000000..8dfd1d4
--- /dev/null
+++ b/SOURCES/bash-4.2-missing_closes.patch
@@ -0,0 +1,39 @@
+There are missing calls of close() leading to resource leak (fd leak).
+Simple reproducer:
+. /
+and /proc/$$/fd contain one open fd for each above call
+
+Signed-off-by: Roman Rakus <rrakus@redhat.com>
+---
+ builtins/evalfile.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/builtins/evalfile.c b/builtins/evalfile.c
+index 60f89d1..d30bd96 100644
+--- a/builtins/evalfile.c
++++ b/builtins/evalfile.c
+@@ -133,11 +133,13 @@ file_error_and_exit:
+   if (S_ISDIR (finfo.st_mode))
+     {
+       (*errfunc) (_("%s: is a directory"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }
+   else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0)
+     {
+       (*errfunc) (_("%s: not a regular file"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }
+ 
+@@ -146,6 +148,7 @@ file_error_and_exit:
+   if (file_size != finfo.st_size || file_size + 1 < file_size)
+     {
+       (*errfunc) (_("%s: file is too large"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }      
+ 
+-- 
+1.7.11.7
+
diff --git a/SOURCES/bash-4.2-noecho.patch b/SOURCES/bash-4.2-noecho.patch
new file mode 100644
index 0000000..4d0f747
--- /dev/null
+++ b/SOURCES/bash-4.2-noecho.patch
@@ -0,0 +1,39 @@
+--- bash-4.2/parse.y	2014-05-29 14:46:09.545543384 +0200
++++ bash-4.2/parse.y	2014-05-29 14:48:40.758626213 +0200
+@@ -3858,6 +3858,8 @@ xparse_dolparen (base, string, indp, fla
+     sflags |= SEVAL_NOLONGJMP;
+   save_parser_state (&ps);
+   save_input_line_state (&ls);
++  /* avoid echoing every substitution again */
++  echo_input_at_read = 0;
+ 
+   /*(*/
+   parser_state |= PST_CMDSUBST|PST_EOFTOKEN;	/* allow instant ')' */ /*(*/
+--- bash-4.2/subst.c	2014-05-29 16:04:35.802784549 +0200
++++ bash-4.2/subst.c	2014-05-29 16:08:25.021942676 +0200
+@@ -7103,6 +7103,7 @@ param_expand (string, sindex, quoted, ex
+   WORD_LIST *list;
+   WORD_DESC *tdesc, *ret;
+   int tflag;
++  int old_echo_input;
+ 
+   zindex = *sindex;
+   c = string[++zindex];
+@@ -7401,6 +7402,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);
+@@ -7413,6 +7417,7 @@ comsub:
+ 	}
+       FREE (temp);
+       temp = temp1;
++      echo_input_at_read = old_echo_input;
+       break;
+ 
+     /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
diff --git a/SOURCES/bash-4.2-rc2-logout.patch b/SOURCES/bash-4.2-rc2-logout.patch
new file mode 100644
index 0000000..5aff01a
--- /dev/null
+++ b/SOURCES/bash-4.2-rc2-logout.patch
@@ -0,0 +1,36 @@
+diff -up bash-3.2/config-top.h.logout bash-3.2/config-top.h
+--- bash-3.2/config-top.h.logout	2011-04-14 08:55:55.000000000 +0200
++++ bash-3.2/config-top.h	2011-04-14 08:55:55.000000000 +0200
+@@ -78,7 +78,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 -up bash-3.2/doc/bash.1.logout bash-3.2/doc/bash.1
+--- bash-3.2/doc/bash.1.logout	2011-04-14 09:16:32.000000000 +0200
++++ bash-3.2/doc/bash.1	2011-04-14 11:59:33.000000000 +0200
+@@ -326,8 +326,8 @@ option may be used when the shell is sta
+ .PP
+ When a login shell exits,
+ .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
+@@ -8814,6 +8814,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
diff --git a/SOURCES/bash-4.2-signal.patch b/SOURCES/bash-4.2-signal.patch
new file mode 100644
index 0000000..a08630d
--- /dev/null
+++ b/SOURCES/bash-4.2-signal.patch
@@ -0,0 +1,36 @@
+diff -up bash-4.1/sig.h.signal bash-4.1/sig.h
+--- bash-4.1/sig.h.signal	2009-01-04 20:32:41.000000000 +0100
++++ bash-4.1/sig.h	2012-08-28 11:19:14.920224571 +0200
+@@ -96,6 +96,8 @@ do { \
+   sigprocmask (SIG_BLOCK, &nvar, &ovar); \
+ } while (0)
+ 
++#define UNBLOCK_SIGNAL(ovar) sigprocmask (SIG_SETMASK, &ovar, (sigset_t *)NULL)
++
+ #if defined (HAVE_POSIX_SIGNALS)
+ #  define BLOCK_CHILD(nvar, ovar) \
+ 	BLOCK_SIGNAL (SIGCHLD, nvar, ovar)
+diff -up bash-4.1/trap.c.signal bash-4.1/trap.c
+--- bash-4.1/trap.c.signal	2009-10-10 23:21:44.000000000 +0200
++++ bash-4.1/trap.c	2012-08-28 10:58:14.746345797 +0200
+@@ -516,6 +516,8 @@ set_signal (sig, string)
+      int sig;
+      char *string;
+ {
++  sigset_t set, oset;
++
+   if (SPECIAL_TRAP (sig))
+     {
+       change_signal (sig, savestring (string));
+@@ -546,9 +548,10 @@ set_signal (sig, string)
+      environment in which it is safe to do so. */
+   if ((sigmodes[sig] & SIG_NO_TRAP) == 0)
+     {
+-      set_signal_handler (sig, SIG_IGN);
++      BLOCK_SIGNAL (sig, set, oset);
+       change_signal (sig, savestring (string));
+       set_signal_handler (sig, trap_handler);
++      UNBLOCK_SIGNAL (oset);
+     }
+   else
+     change_signal (sig, savestring (string));
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-cve-2016-0634.patch b/SOURCES/bash-4.3-cve-2016-0634.patch
new file mode 100644
index 0000000..21b821c
--- /dev/null
+++ b/SOURCES/bash-4.3-cve-2016-0634.patch
@@ -0,0 +1,95 @@
+diff --git a/parse.y b/parse.y
+index 12d6def..d4a93a2 100644
+--- a/parse.y
++++ b/parse.y
+@@ -5103,7 +5103,7 @@ decode_prompt_string (string)
+   size_t result_size;
+   int result_index;
+   int c, n, i;
+-  char *temp, octal_string[4];
++  char *temp, *t_host, octal_string[4];
+   struct tm *tm;  
+   time_t the_time;
+   char timebuf[128];
+@@ -5251,7 +5251,11 @@ decode_prompt_string (string)
+ 
+ 	    case 's':
+ 	      temp = base_pathname (shell_name);
+-	      temp = savestring (temp);
++	      /* Try to quote anything the user can set in the file system */
++	      if (promptvars || posixly_correct)
++		temp = sh_backslash_quote_for_double_quotes (temp);
++	      else
++		temp = savestring (temp);
+ 	      goto add_string;
+ 
+ 	    case 'v':
+@@ -5337,9 +5341,17 @@ decode_prompt_string (string)
+ 
+ 	    case 'h':
+ 	    case 'H':
+-	      temp = savestring (current_host_name);
+-	      if (c == 'h' && (t = (char *)strchr (temp, '.')))
++	      t_host = savestring (current_host_name);
++	      if (c == 'h' && (t = (char *)strchr (t_host, '.')))
+ 		*t = '\0';
++	      if (promptvars || posixly_correct)
++		/* Make sure that expand_prompt_string is called with a
++		   second argument of Q_DOUBLE_QUOTES if we use this
++		   function here. */
++		temp = sh_backslash_quote_for_double_quotes (t_host);
++	      else
++		temp = savestring (t_host);
++	      free (t_host);
+ 	      goto add_string;
+ 
+ 	    case '#':
+diff --git a/y.tab.c b/y.tab.c
+index 23b88bc..1c0f5a1 100644
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -7368,7 +7368,7 @@ decode_prompt_string (string)
+   size_t result_size;
+   int result_index;
+   int c, n, i;
+-  char *temp, octal_string[4];
++  char *temp, *t_host, octal_string[4];
+   struct tm *tm;  
+   time_t the_time;
+   char timebuf[128];
+@@ -7513,7 +7513,11 @@ decode_prompt_string (string)
+ 
+ 	    case 's':
+ 	      temp = base_pathname (shell_name);
+-	      temp = savestring (temp);
++	      /* Try to quote anything the user can set in the file system */
++	      if (promptvars || posixly_correct)
++		temp = sh_backslash_quote_for_double_quotes (temp);
++	      else
++		temp = savestring (temp);
+ 	      goto add_string;
+ 
+ 	    case 'v':
+@@ -7599,9 +7603,17 @@ decode_prompt_string (string)
+ 
+ 	    case 'h':
+ 	    case 'H':
+-	      temp = savestring (current_host_name);
+-	      if (c == 'h' && (t = (char *)strchr (temp, '.')))
++	      t_host = savestring (current_host_name);
++	      if (c == 'h' && (t = (char *)strchr (t_host, '.')))
+ 		*t = '\0';
++	      if (promptvars || posixly_correct)
++		/* Make sure that expand_prompt_string is called with a
++		   second argument of Q_DOUBLE_QUOTES if we use this
++		   function here. */
++		temp = sh_backslash_quote_for_double_quotes (t_host);
++	      else
++		temp = savestring (t_host);
++	      free (t_host);
+ 	      goto add_string;
+ 
+ 	    case '#':
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.3-cve-2016-7543.patch b/SOURCES/bash-4.3-cve-2016-7543.patch
new file mode 100644
index 0000000..81ee471
--- /dev/null
+++ b/SOURCES/bash-4.3-cve-2016-7543.patch
@@ -0,0 +1,20 @@
+diff --git a/variables.c b/variables.c
+index b7ebaea..5e2986f 100644
+--- a/variables.c
++++ b/variables.c
+@@ -467,7 +467,11 @@ initialize_shell_variables (env, privmode)
+ #endif
+       set_if_not ("PS2", secondary_prompt);
+     }
+-  set_if_not ("PS4", "+ ");
++
++  if (current_user.euid == 0)
++    bind_variable ("PS4", "+ ", 0);
++  else
++    set_if_not ("PS4", "+ ");
+ 
+   /* Don't allow IFS to be imported from the environment. */
+   temp_var = bind_variable ("IFS", " \t\n", 0);
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-4.3-pipefd-leak.patch b/SOURCES/bash-4.3-pipefd-leak.patch
new file mode 100644
index 0000000..2885d2e
--- /dev/null
+++ b/SOURCES/bash-4.3-pipefd-leak.patch
@@ -0,0 +1,60 @@
+diff --git a/execute_cmd.c b/execute_cmd.c
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -536,6 +536,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+   REDIRECT *my_undo_list, *exec_undo_list;
+   volatile int last_pid;
+   volatile int save_line_number;
++#if defined (PROCESS_SUBSTITUTION)
++  volatile int ofifo, nfifo, osize, saved_fifo;
++  volatile char *ofifo_list = NULL;
++#endif
+ 
+ #if 0
+   if (command == 0 || breaking || continuing || read_but_dont_execute)
+@@ -681,6 +685,17 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+   if (shell_control_structure (command->type) && command->redirects)
+     stdin_redir = stdin_redirects (command->redirects);
+ 
++#if defined (PROCESS_SUBSTITUTION)
++  if (variable_context != 0)
++    {
++      ofifo = num_fifos ();
++      ofifo_list = copy_fifo_list ((int*)&osize);
++      saved_fifo = 1;
++    }
++  else
++    saved_fifo = 0;
++#endif
++
+   /* Handle WHILE FOR CASE etc. with redirections.  (Also '&' input
+      redirection.)  */
+   if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
+@@ -688,6 +703,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+       cleanup_redirects (redirection_undo_list);
+       redirection_undo_list = (REDIRECT *)NULL;
+       dispose_exec_redirects ();
++#if defined (PROCESS_SUBSTITUTION)
++      free ((void*)ofifo_list);
++#endif
+       return (last_command_exit_value = EXECUTION_FAILURE);
+     }
+ 
+@@ -982,6 +1000,17 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+   if (my_undo_list || exec_undo_list)
+     discard_unwind_frame ("loop_redirections");
+ 
++#if defined (PROCESS_SUBSTITUTION)
++  if (saved_fifo)
++    {
++      nfifo = num_fifos ();
++      if (nfifo > ofifo)
++       close_new_fifos ((char*)ofifo_list, osize);
++      free ((void*)ofifo_list);
++    }
++#endif
++
++
+   /* Invert the return value if we have to */
+   if (invert)
+     exec_result = (exec_result == EXECUTION_SUCCESS)
diff --git a/SOURCES/bash-4.3-trapped-signals.patch b/SOURCES/bash-4.3-trapped-signals.patch
new file mode 100644
index 0000000..2c4333a
--- /dev/null
+++ b/SOURCES/bash-4.3-trapped-signals.patch
@@ -0,0 +1,24 @@
+diff --git a/jobs.c b/jobs.c
+index 37edece..31395fe 100644
+--- a/jobs.c
++++ b/jobs.c
+@@ -2244,10 +2244,14 @@ wait_sigint_handler (sig)
+ 	  signal_is_trapped (SIGINT) &&
+ 	  ((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler))
+ 	{
+-	  interrupt_immediately = 0;
+ 	  trap_handler (SIGINT);	/* set pending_traps[SIGINT] */
+ 	  wait_signal_received = SIGINT;
+-	  longjmp (wait_intr_buf, 1);
++	  if (interrupt_immediately)
++	    {
++	      interrupt_immediately = 0;
++	      longjmp (wait_intr_buf, 1);
++	    }
++	  SIGRETURN (0);
+ 	}
+       
+       ADDINTERRUPT;
+-- 
+2.5.5
+
diff --git a/SOURCES/bash-4.3-wshouldquote.patch b/SOURCES/bash-4.3-wshouldquote.patch
new file mode 100644
index 0000000..20718c3
--- /dev/null
+++ b/SOURCES/bash-4.3-wshouldquote.patch
@@ -0,0 +1,149 @@
+diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c
+--- a/lib/sh/strtrans.c
++++ b/lib/sh/strtrans.c
+@@ -30,6 +30,9 @@
+ 
+ #include "shell.h"
+ 
++#include "shmbchar.h"
++#include "shmbutil.h"
++
+ #ifdef ESC
+ #undef ESC
+ #endif
+@@ -74,7 +77,7 @@ ansicstr (string, len, flags, sawc, rlen)
+ 	    case 'a': c = '\a'; break;
+ 	    case 'v': c = '\v'; break;
+ #else
+-	    case 'a': c = '\007'; break;
++	    case 'a': c = (int) 0x07; break;
+ 	    case 'v': c = (int) 0x0B; break;
+ #endif
+ 	    case 'b': c = '\b'; break;
+@@ -208,6 +211,11 @@ ansic_quote (str, flags, rlen)
+   char *r, *ret, *s;
+   int l, rsize;
+   unsigned char c;
++  size_t clen;
++  int b;
++#if defined (HANDLE_MULTIBYTE)
++  wchar_t wc;
++#endif
+ 
+   if (str == 0 || *str == 0)
+     return ((char *)0);
+@@ -219,10 +227,11 @@ ansic_quote (str, flags, rlen)
+   *r++ = '$';
+   *r++ = '\'';
+ 
+-  for (s = str, l = 0; *s; s++)
++  for (s = str; c = *s; s++)
+     {
+-      c = *s;
+-      l = 1;		/* 1 == add backslash; 0 == no backslash */
++      b = l = 1;		/* 1 == add backslash; 0 == no backslash */
++      clen = 1;
++
+       switch (c)
+ 	{
+ 	case ESC: c = 'E'; break;
+@@ -230,7 +239,7 @@ ansic_quote (str, flags, rlen)
+ 	case '\a': c = 'a'; break;
+ 	case '\v': c = 'v'; break;
+ #else
+-	case '\007': c = 'a'; break;
++	case 0x07: c = 'a'; break;
+ 	case 0x0b: c = 'v'; break;
+ #endif
+ 
+@@ -243,7 +252,13 @@ ansic_quote (str, flags, rlen)
+ 	case '\'':
+ 	  break;
+ 	default:
++#if defined (HANDLE_MULTIBYTE)
++	  b = is_basic (c);
++	  if ((b == 0 && ((clen = mbrtowc (&wc, s, MB_CUR_MAX, 0)) < 0 || MB_INVALIDCH (clen) || iswprint (wc) == 0)) ||
++	      (b == 1 && ISPRINT (c) == 0))
++#else
+ 	  if (ISPRINT (c) == 0)
++#endif
+ 	    {
+ 	      *r++ = '\\';
+ 	      *r++ = TOCHAR ((c >> 6) & 07);
+@@ -254,9 +269,20 @@ ansic_quote (str, flags, rlen)
+ 	  l = 0;
+ 	  break;
+ 	}
++      if (b == 0 && clen == 0)
++	break;
++
+       if (l)
+ 	*r++ = '\\';
+-      *r++ = c;
++
++      if (clen == 1)
++	*r++ = c;
++      else
++	{
++	  for (b = 0; b < (int)clen; b++)
++	    *r++ = (unsigned char)s[b];
++	  s += clen - 1;	/* -1 because of the increment above */
++	}
+     }
+ 
+   *r++ = '\'';
+@@ -266,6 +292,37 @@ ansic_quote (str, flags, rlen)
+   return ret;
+ }
+ 
++#if defined (HANDLE_MULTIBYTE)
++int
++ansic_wshouldquote (string)
++     const char *string;
++{
++  const wchar_t *wcs;
++  wchar_t wcc;
++
++  wchar_t *wcstr = NULL;
++  size_t slen;
++
++
++  slen = mbstowcs (wcstr, string, 0);
++
++  if (slen == -1)
++    slen = 0;
++  wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1));
++  mbstowcs (wcstr, string, slen + 1);
++
++  for (wcs = wcstr; wcc = *wcs; wcs++)
++    if (iswprint(wcc) == 0)
++      {
++	free (wcstr);
++	return 1;
++      }
++
++  free (wcstr);
++  return 0;	
++}
++#endif
++
+ /* return 1 if we need to quote with $'...' because of non-printing chars. */
+ int
+ ansic_shouldquote (string)
+@@ -278,8 +335,14 @@ ansic_shouldquote (string)
+     return 0;
+ 
+   for (s = string; c = *s; s++)
+-    if (ISPRINT (c) == 0)
+-      return 1;
++    {
++#if defined (HANDLE_MULTIBYTE)
++      if (is_basic (c) == 0)
++	return (ansic_wshouldquote (s));
++#endif
++      if (ISPRINT (c) == 0)
++	return 1;
++    }
+ 
+   return 0;
+ }
diff --git a/SOURCES/bash-4.4-param-expansion.patch b/SOURCES/bash-4.4-param-expansion.patch
new file mode 100644
index 0000000..555477f
--- /dev/null
+++ b/SOURCES/bash-4.4-param-expansion.patch
@@ -0,0 +1,73 @@
+diff --git a/parse.y b/parse.y
+index 9a78d0c..7df7d99 100644
+--- a/parse.y
++++ b/parse.y
+@@ -4993,7 +4993,8 @@ decode_prompt_string (string)
+   struct dstack save_dstack;
+   int last_exit_value, last_comsub_pid;
+ #if defined (PROMPT_STRING_DECODE)
+-  int result_size, result_index;
++  size_t result_size;
++  int result_index;
+   int c, n, i;
+   char *temp, octal_string[4];
+   struct tm *tm;  
+diff --git a/subst.c b/subst.c
+index 9f15f0b..e5ffd03 100644
+--- a/subst.c
++++ b/subst.c
+@@ -644,11 +644,13 @@ unquoted_substring (substr, string)
+ INLINE char *
+ sub_append_string (source, target, indx, size)
+      char *source, *target;
+-     int *indx, *size;
++     int *indx;
++     size_t *size;
+ {
+   if (source)
+     {
+-      int srclen, n;
++      int n;
++      size_t srclen;
+ 
+       srclen = STRLEN (source);
+       if (srclen >= (int)(*size - *indx))
+@@ -7676,7 +7678,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
+   char *istring;
+ 
+   /* The current size of the above object. */
+-  int istring_size;
++  size_t istring_size;
+ 
+   /* Index into ISTRING. */
+   int istring_index;
+diff --git a/subst.h b/subst.h
+index b06e8c2..fc66faf 100644
+--- a/subst.h
++++ b/subst.h
+@@ -127,7 +127,7 @@ extern int do_word_assignment __P((WORD_DESC *));
+    of space allocated to TARGET.  SOURCE can be NULL, in which
+    case nothing happens.  Gets rid of SOURCE by free ()ing it.
+    Returns TARGET in case the location has changed. */
+-extern char *sub_append_string __P((char *, char *, int *, int *));
++extern char *sub_append_string __P((char *, char *, int *, size_t *));
+ 
+ /* Append the textual representation of NUMBER to TARGET.
+    INDEX and SIZE are as in SUB_APPEND_STRING. */
+diff --git a/y.tab.c b/y.tab.c
+index d702554..31faa4a 100644
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -7280,7 +7280,8 @@ decode_prompt_string (string)
+   struct dstack save_dstack;
+   int last_exit_value, last_comsub_pid;
+ #if defined (PROMPT_STRING_DECODE)
+-  int result_size, result_index;
++  size_t result_size;
++  int result_index;
+   int c, n, i;
+   char *temp, octal_string[4];
+   struct tm *tm;  
+-- 
+2.5.5
+
diff --git a/SOURCES/bash-4.4-pipeline-pgrp.patch b/SOURCES/bash-4.4-pipeline-pgrp.patch
new file mode 100644
index 0000000..860cd1b
--- /dev/null
+++ b/SOURCES/bash-4.4-pipeline-pgrp.patch
@@ -0,0 +1,17 @@
+diff --git a/subst.c b/subst.c
+index 1dbfb5e..049962e 100644
+--- a/subst.c
++++ b/subst.c
+@@ -5011,7 +5011,8 @@ process_substitute (string, open_for_read_in_child)
+ 
+ #if defined (JOB_CONTROL)
+   old_pipeline_pgrp = pipeline_pgrp;
+-  pipeline_pgrp = shell_pgrp;
++  if (pipeline_pgrp == 0 || (subshell_environment & (SUBSHELL_PIPE|SUBSHELL_FORK|SUBSHELL_ASYNC)) == 0)
++    pipeline_pgrp = shell_pgrp;
+   save_pipeline (1);
+ #endif /* JOB_CONTROL */
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-bashbug.patch b/SOURCES/bash-bashbug.patch
new file mode 100644
index 0000000..656e3b4
--- /dev/null
+++ b/SOURCES/bash-bashbug.patch
@@ -0,0 +1,56 @@
+diff -up bash-4.2-rc2/doc/bash.1.bashbug bash-4.2-rc2/doc/bash.1
+--- bash-4.2-rc2/doc/bash.1.bashbug	2011-01-16 21:31:39.000000000 +0100
++++ bash-4.2-rc2/doc/bash.1	2011-02-09 08:52:14.000000000 +0100
+@@ -9857,7 +9857,7 @@ The latest version is always available f
+ .PP
+ Once you have determined that a bug actually exists, use the
+ .I bashbug
+-command to submit a bug report.
++command (from the source package) to submit a bug report.
+ If you have a fix, you are encouraged to mail that as well!
+ Suggestions and `philosophical' bug reports may be mailed
+ to \fIbug-bash@gnu.org\fP or posted to the Usenet
+@@ -9879,10 +9879,6 @@ A description of the bug behaviour
+ A short script or `recipe' which exercises the bug
+ .PD
+ .PP
+-.I bashbug
+-inserts the first three items automatically into the template
+-it provides for filing a bug report.
+-.PP
+ Comments and bug reports concerning
+ this manual page should be directed to
+ .IR chet.ramey@case.edu .
+diff -up bash-4.2-rc2/doc/bashref.texi.bashbug bash-4.2-rc2/doc/bashref.texi
+--- bash-4.2-rc2/doc/bashref.texi.bashbug	2011-01-16 21:31:57.000000000 +0100
++++ bash-4.2-rc2/doc/bashref.texi	2011-02-09 08:47:07.000000000 +0100
+@@ -7635,7 +7635,7 @@ The latest version of Bash is always ava
+ @uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
+ 
+ Once you have determined that a bug actually exists, use the
+-@code{bashbug} command to submit a bug report.
++@code{bashbug} command (from the source package) to submit a bug report.
+ If you have a fix, you are encouraged to mail that as well!
+ Suggestions and `philosophical' bug reports may be mailed
+ to @email{bug-bash@@gnu.org} or posted to the Usenet
+@@ -7657,9 +7657,6 @@ to reproduce it.
+ @end itemize
+ 
+ @noindent
+-@code{bashbug} inserts the first three items automatically into
+-the template it provides for filing a bug report.
+-
+ Please send all reports concerning this manual to
+ @email{chet.ramey@@case.edu}.
+ 
+diff -up bash-4.2-rc2/shell.c.bashbug bash-4.2-rc2/shell.c
+--- bash-4.2-rc2/shell.c.bashbug	2011-01-02 22:04:51.000000000 +0100
++++ bash-4.2-rc2/shell.c	2011-02-09 08:47:07.000000000 +0100
+@@ -1823,7 +1823,6 @@ show_shell_usage (fp, extra)
+     {
+       fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name);
+       fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name);
+-      fprintf (fp, _("Use the `bashbug' command to report bugs.\n"));
+     }
+ }
+ 
diff --git a/SOURCES/bash-cve-2016-9401.patch b/SOURCES/bash-cve-2016-9401.patch
new file mode 100644
index 0000000..69eb9d7
--- /dev/null
+++ b/SOURCES/bash-cve-2016-9401.patch
@@ -0,0 +1,28 @@
+diff --git a/builtins/pushd.def b/builtins/pushd.def
+index 05b7529..4eb0132 100644
+--- a/builtins/pushd.def
++++ b/builtins/pushd.def
+@@ -353,7 +353,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);
+@@ -375,6 +375,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--;
+ 
+-- 
+2.9.3
+
diff --git a/SOURCES/bash-infotags.patch b/SOURCES/bash-infotags.patch
new file mode 100644
index 0000000..2e50d6e
--- /dev/null
+++ b/SOURCES/bash-infotags.patch
@@ -0,0 +1,30 @@
+--- bash-3.1/doc/Makefile.in.infotags	2006-07-12 13:57:18.000000000 +0100
++++ bash-3.1/doc/Makefile.in	2006-07-12 13:58:25.000000000 +0100
+@@ -69,7 +69,6 @@
+ 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
+@@ -146,7 +145,7 @@
+ 
+ PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps 
+ DVIFILES = bashref.dvi bashref.ps
+-INFOFILES = bashref.info
++INFOFILES = bashref.info bash.info
+ MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
+ HTMLFILES = bashref.html bash.html
+ PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
+@@ -167,8 +166,8 @@
+ bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ 	$(TEXI2HTML) -menu -monolithic -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
diff --git a/SOURCES/bash-requires.patch b/SOURCES/bash-requires.patch
new file mode 100644
index 0000000..63ef4d7
--- /dev/null
+++ b/SOURCES/bash-requires.patch
@@ -0,0 +1,311 @@
+diff -up bash-4.1/builtins.h.requires bash-4.1/builtins.h
+--- bash-4.1/builtins.h.requires	2009-01-04 20:32:23.000000000 +0100
++++ bash-4.1/builtins.h	2010-08-02 17:42:41.000000000 +0200
+@@ -41,6 +41,8 @@
+ #define SPECIAL_BUILTIN 0x08	/* This is a Posix `special' builtin. */
+ #define ASSIGNMENT_BUILTIN 0x10	/* This builtin takes assignment statements. */
+ #define POSIX_BUILTIN	0x20	/* This builtins is special in the Posix command search order. */
++#define REQUIRES_BUILTIN 0x40	/* This builtin requires other files. */
++
+ 
+ #define BASE_INDENT	4
+ 
+diff -up bash-4.1/builtins/mkbuiltins.c.requires bash-4.1/builtins/mkbuiltins.c
+--- bash-4.1/builtins/mkbuiltins.c.requires	2009-01-04 20:32:23.000000000 +0100
++++ bash-4.1/builtins/mkbuiltins.c	2010-08-02 17:42:41.000000000 +0200
+@@ -69,9 +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_POSIX_BUILTIN 0x04
++#define BUILTIN_FLAG_REQUIRES	0x08
++
+ 
+ #define BASE_INDENT	4
+ 
+@@ -163,10 +169,18 @@ 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_posix_builtin ();
++static int is_requires_builtin ();
+ 
+ #if !defined (HAVE_RENAME)
+ static int rename ();
+@@ -812,6 +826,9 @@ builtin_handler (self, defs, arg)
+     new->flags |= BUILTIN_FLAG_ASSIGNMENT;
+   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;
+@@ -1229,11 +1246,12 @@ write_builtins (defs, structfile, extern
+ 		  else
+ 		    fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
+ 
+-		  fprintf (structfile, "%s%s%s%s, %s_doc,\n",
++		  fprintf (structfile, "%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_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
++		    (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
+ 		    document_name (builtin));
+ 
+ 		  fprintf
+@@ -1581,6 +1599,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 -up bash-4.1/doc/bash.1.requires bash-4.1/doc/bash.1
+--- bash-4.1/doc/bash.1.requires	2010-08-02 17:42:41.000000000 +0200
++++ bash-4.1/doc/bash.1	2010-08-02 18:09:27.000000000 +0200
+@@ -231,6 +231,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 -up bash-4.1/doc/bashref.texi.requires bash-4.1/doc/bashref.texi
+--- bash-4.1/doc/bashref.texi.requires	2010-08-02 17:42:41.000000000 +0200
++++ bash-4.1/doc/bashref.texi	2010-08-02 18:11:58.000000000 +0200
+@@ -5343,6 +5343,13 @@ standard.  @xref{Bash POSIX Mode}, for a
+ @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 -up bash-4.1/eval.c.requires bash-4.1/eval.c
+--- bash-4.1/eval.c.requires	2009-01-04 20:32:26.000000000 +0100
++++ bash-4.1/eval.c	2010-08-02 17:42:41.000000000 +0200
+@@ -53,6 +53,7 @@ extern int last_command_exit_value, stdi
+ extern int need_here_doc;
+ extern int current_command_number, current_command_line_count, line_number;
+ extern int expand_aliases;
++extern int rpm_requires;
+ 
+ static void send_pwd_to_eterm __P((void));
+ static sighandler alrm_catcher __P((int));
+@@ -136,7 +137,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 -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
+--- bash-4.1/execute_cmd.c.requires	2010-08-02 17:42:41.000000000 +0200
++++ bash-4.1/execute_cmd.c	2010-08-02 17:42:41.000000000 +0200
+@@ -503,6 +503,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 asynchrounously.
+    COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
+    ASYNCHROUNOUS, if non-zero, says to do this command in the background.
+@@ -534,7 +536,13 @@ execute_command_internal (command, async
+ #else
+   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->command);
++  if (read_but_dont_execute)
+     return (EXECUTION_SUCCESS);
+ #endif
+ 
+@@ -5066,7 +5074,7 @@ execute_intern_function (name, function)
+ 
+   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 -up bash-4.1/execute_cmd.h.requires bash-4.1/execute_cmd.h
+--- bash-4.1/execute_cmd.h.requires	2009-01-16 22:20:15.000000000 +0100
++++ bash-4.1/execute_cmd.h	2010-08-02 17:42:41.000000000 +0200
+@@ -22,6 +22,8 @@
+ #define _EXECUTE_CMD_H_
+ 
+ #include "stdc.h"
++#include "variables.h"
++#include "command.h"
+ 
+ extern struct fd_bitmap *new_fd_bitmap __P((int));
+ extern void dispose_fd_bitmap __P((struct fd_bitmap *));
+diff -up bash-4.1/make_cmd.c.requires bash-4.1/make_cmd.c
+--- bash-4.1/make_cmd.c.requires	2009-09-11 23:26:12.000000000 +0200
++++ bash-4.1/make_cmd.c	2010-08-02 17:42:41.000000000 +0200
+@@ -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"
+@@ -56,6 +60,10 @@
+ 
+ extern int line_number, current_command_line_count, parser_state;
+ extern int last_command_exit_value;
++extern int rpm_requires;
++
++static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz"
++                     "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ 
+ /* Object caching */
+ sh_obj_cache_t wdcache = {0, 0, 0};
+@@ -820,6 +828,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. */
+@@ -837,6 +866,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 -up bash-4.1/shell.c.requires bash-4.1/shell.c
+--- bash-4.1/shell.c.requires	2010-08-02 17:42:41.000000000 +0200
++++ bash-4.1/shell.c	2010-08-02 17:42:41.000000000 +0200
+@@ -193,6 +193,9 @@ int have_devfd = 0;
+ /* The name of the .(shell)rc file. */
+ static char *bashrc_file = "~/.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;
+ 
+@@ -251,6 +254,7 @@ static const struct {
+   { "posix", Int, &posixly_correct, (char **)0x0 },
+   { "protected", Int, &protected_mode, (char **)0x0 },
+   { "rcfile", Charp, (int *)0x0, &bashrc_file },
++  { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
+ #if defined (RESTRICTED_SHELL)
+   { "restricted", Int, &restricted, (char **)0x0 },
+ #endif
+@@ -485,6 +489,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 ();
+ 
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..984f1b4
--- /dev/null
+++ b/SOURCES/bash-tty-tests.patch
@@ -0,0 +1,54 @@
+diff -up bash-4.2-rc2/tests/exec.right.tty_tests bash-4.2-rc2/tests/exec.right
+--- bash-4.2-rc2/tests/exec.right.tty_tests	2011-02-09 10:42:48.000000000 +0100
++++ bash-4.2-rc2/tests/exec.right	2011-02-09 10:42:59.000000000 +0100
+@@ -50,7 +50,6 @@ this is ohio-state
+ 0
+ 1
+ testb
+-expand_aliases 	on
+ 1
+ 1
+ 1
+diff -up bash-4.2-rc2/tests/execscript.tty_tests bash-4.2-rc2/tests/execscript
+--- bash-4.2-rc2/tests/execscript.tty_tests	2010-12-27 22:01:02.000000000 +0100
++++ bash-4.2-rc2/tests/execscript	2011-02-09 10:42:34.000000000 +0100
+@@ -107,8 +107,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
+ 
+ true | `echo true` &
+diff -up bash-4.2-rc2/tests/read.right.tty_tests bash-4.2-rc2/tests/read.right
+--- bash-4.2-rc2/tests/read.right.tty_tests	2010-12-21 16:49:00.000000000 +0100
++++ bash-4.2-rc2/tests/read.right	2011-02-09 10:42:34.000000000 +0100
+@@ -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 -up bash-4.2-rc2/tests/read.tests.tty_tests bash-4.2-rc2/tests/read.tests
+--- bash-4.2-rc2/tests/read.tests.tty_tests	2008-09-06 19:09:11.000000000 +0200
++++ bash-4.2-rc2/tests/read.tests	2011-02-09 10:42:34.000000000 +0100
+@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; re
+ # 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
+ 
diff --git a/SOURCES/bash42-001 b/SOURCES/bash42-001
new file mode 100644
index 0000000..547aaa0
--- /dev/null
+++ b/SOURCES/bash42-001
@@ -0,0 +1,78 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-001
+
+Bug-Reported-by:	Juergen Daubert <jue@jue.li>
+Bug-Reference-ID:	<20110214175132.GA19813@jue.netz>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00125.html
+
+Bug-Description:
+
+When running in Posix mode, bash does not correctly expand the right-hand
+side of a double-quoted word expansion containing single quotes.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2011-01-02 16:12:51.000000000 -0500
+--- subst.c	2011-02-19 00:00:00.000000000 -0500
+***************
+*** 1380,1387 ****
+  
+    /* The handling of dolbrace_state needs to agree with the code in parse.y:
+!      parse_matched_pair() */
+!   dolbrace_state = 0;
+!   if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+!     dolbrace_state = (flags & SX_POSIXEXP) ? DOLBRACE_QUOTE : DOLBRACE_PARAM;
+  
+    i = *sindex;
+--- 1380,1389 ----
+  
+    /* The handling of dolbrace_state needs to agree with the code in parse.y:
+!      parse_matched_pair().  The different initial value is to handle the
+!      case where this function is called to parse the word in
+!      ${param op word} (SX_WORD). */
+!   dolbrace_state = (flags & SX_WORD) ? DOLBRACE_WORD : DOLBRACE_PARAM;
+!   if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP))
+!     dolbrace_state = DOLBRACE_QUOTE;
+  
+    i = *sindex;
+***************
+*** 7177,7181 ****
+        /* Extract the contents of the ${ ... } expansion
+  	 according to the Posix.2 rules. */
+!       value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#') ? SX_POSIXEXP : 0);
+        if (string[sindex] == RBRACE)
+  	sindex++;
+--- 7181,7185 ----
+        /* Extract the contents of the ${ ... } expansion
+  	 according to the Posix.2 rules. */
+!       value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#' || c =='/' || c == '^' || c == ',' || c ==':') ? SX_POSIXEXP|SX_WORD : SX_WORD);
+        if (string[sindex] == RBRACE)
+  	sindex++;
+*** ../bash-4.2-patched/subst.h	2010-12-02 20:21:29.000000000 -0500
+--- subst.h	2011-02-16 21:12:09.000000000 -0500
+***************
+*** 57,60 ****
+--- 57,61 ----
+  #define SX_ARITHSUB	0x0080	/* extracting $(( ... )) (currently unused) */
+  #define SX_POSIXEXP	0x0100	/* extracting new Posix pattern removal expansions in extract_dollar_brace_string */
++ #define SX_WORD		0x0200	/* extracting word in ${param op word} */
+  
+  /* Remove backslashes which are quoting backquotes from STRING.  Modifies
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 0
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-002 b/SOURCES/bash42-002
new file mode 100644
index 0000000..077c7e0
--- /dev/null
+++ b/SOURCES/bash42-002
@@ -0,0 +1,60 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-002
+
+Bug-Reported-by:	Clark J. Wang <dearvoid@gmail.com>
+Bug-Reference-ID:	<AANLkTimGbW7aC4E5infXP6ku5WPci4t=xVc+L1SyHqrD@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html
+
+Bug-Description:
+
+The readline vi-mode `cc', `dd', and `yy' commands failed to modify the
+entire line.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/readline/vi_mode.c	2010-11-20 19:51:39.000000000 -0500
+--- lib/readline/vi_mode.c	2011-02-17 20:24:25.000000000 -0500
+***************
+*** 1115,1119 ****
+        _rl_vi_last_motion = c;
+        RL_UNSETSTATE (RL_STATE_VIMOTION);
+!       return (0);
+      }
+  #if defined (READLINE_CALLBACKS)
+--- 1115,1119 ----
+        _rl_vi_last_motion = c;
+        RL_UNSETSTATE (RL_STATE_VIMOTION);
+!       return (vidomove_dispatch (m));
+      }
+  #if defined (READLINE_CALLBACKS)
+*** ../bash-4.2-patched/lib/readline/callback.c	2010-06-06 12:18:58.000000000 -0400
+--- lib/readline/callback.c	2011-02-17 20:43:28.000000000 -0500
+***************
+*** 149,152 ****
+--- 149,155 ----
+  	  /* Should handle everything, including cleanup, numeric arguments,
+  	     and turning off RL_STATE_VIMOTION */
++ 	  if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
++ 	    _rl_internal_char_cleanup ();
++ 
+  	  return;
+  	}
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+
diff --git a/SOURCES/bash42-003 b/SOURCES/bash42-003
new file mode 100644
index 0000000..c488e96
--- /dev/null
+++ b/SOURCES/bash42-003
@@ -0,0 +1,318 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-003
+
+Bug-Reported-by:	Clark J. Wang <dearvoid@gmail.com>
+Bug-Reference-ID:	<AANLkTikZ_rVV-frR8Fh0PzhXnMKnm5XsUR-F3qtPPs5G@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00136.html
+
+Bug-Description:
+
+When using the pattern replacement and pattern removal word expansions, bash
+miscalculates the possible match length in the presence of an unescaped left
+bracket without a closing right bracket, resulting in a failure to match
+the pattern.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/glob/gmisc.c	2011-02-05 16:11:17.000000000 -0500
+--- lib/glob/gmisc.c	2011-02-18 23:53:42.000000000 -0500
+***************
+*** 78,83 ****
+       size_t wmax;
+  {
+!   wchar_t wc, *wbrack;
+!   int matlen, t, in_cclass, in_collsym, in_equiv;
+  
+    if (*wpat == 0)
+--- 78,83 ----
+       size_t wmax;
+  {
+!   wchar_t wc;
+!   int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
+  
+    if (*wpat == 0)
+***************
+*** 119,123 ****
+  	case L'[':
+  	  /* scan for ending `]', skipping over embedded [:...:] */
+! 	  wbrack = wpat;
+  	  wc = *wpat++;
+  	  do
+--- 119,123 ----
+  	case L'[':
+  	  /* scan for ending `]', skipping over embedded [:...:] */
+! 	  bracklen = 1;
+  	  wc = *wpat++;
+  	  do
+***************
+*** 125,140 ****
+  	      if (wc == 0)
+  		{
+! 	          matlen += wpat - wbrack - 1;	/* incremented below */
+! 	          break;
+  	        }
+  	      else if (wc == L'\\')
+  		{
+! 		  wc = *wpat++;
+! 		  if (*wpat == 0)
+! 		    break;
+  		}
+  	      else if (wc == L'[' && *wpat == L':')	/* character class */
+  		{
+  		  wpat++;
+  		  in_cclass = 1;
+  		}
+--- 125,148 ----
+  	      if (wc == 0)
+  		{
+! 		  wpat--;			/* back up to NUL */
+! 	          matlen += bracklen;
+! 	          goto bad_bracket;
+  	        }
+  	      else if (wc == L'\\')
+  		{
+! 		  /* *wpat == backslash-escaped character */
+! 		  bracklen++;
+! 		  /* If the backslash or backslash-escape ends the string,
+! 		     bail.  The ++wpat skips over the backslash escape */
+! 		  if (*wpat == 0 || *++wpat == 0)
+! 		    {
+! 		      matlen += bracklen;
+! 		      goto bad_bracket;
+! 		    }
+  		}
+  	      else if (wc == L'[' && *wpat == L':')	/* character class */
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  in_cclass = 1;
+  		}
+***************
+*** 142,145 ****
+--- 150,154 ----
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  in_cclass = 0;
+  		}
+***************
+*** 147,152 ****
+  		{
+  		  wpat++;
+  		  if (*wpat == L']')	/* right bracket can appear as collating symbol */
+! 		    wpat++;
+  		  in_collsym = 1;
+  		}
+--- 156,165 ----
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  if (*wpat == L']')	/* right bracket can appear as collating symbol */
+! 		    {
+! 		      wpat++;
+! 		      bracklen++;
+! 		    }
+  		  in_collsym = 1;
+  		}
+***************
+*** 154,157 ****
+--- 167,171 ----
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  in_collsym = 0;
+  		}
+***************
+*** 159,164 ****
+  		{
+  		  wpat++;
+  		  if (*wpat == L']')	/* right bracket can appear as equivalence class */
+! 		    wpat++;
+  		  in_equiv = 1;
+  		}
+--- 173,182 ----
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  if (*wpat == L']')	/* right bracket can appear as equivalence class */
+! 		    {
+! 		      wpat++;
+! 		      bracklen++;
+! 		    }
+  		  in_equiv = 1;
+  		}
+***************
+*** 166,174 ****
+--- 184,196 ----
+  		{
+  		  wpat++;
++ 		  bracklen++;
+  		  in_equiv = 0;
+  		}
++ 	      else
++ 		bracklen++;
+  	    }
+  	  while ((wc = *wpat++) != L']');
+  	  matlen++;		/* bracket expression can only match one char */
++ bad_bracket:
+  	  break;
+  	}
+***************
+*** 214,219 ****
+       size_t max;
+  {
+!   char c, *brack;
+!   int matlen, t, in_cclass, in_collsym, in_equiv;
+  
+    if (*pat == 0)
+--- 236,241 ----
+       size_t max;
+  {
+!   char c;
+!   int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
+  
+    if (*pat == 0)
+***************
+*** 255,259 ****
+  	case '[':
+  	  /* scan for ending `]', skipping over embedded [:...:] */
+! 	  brack = pat;
+  	  c = *pat++;
+  	  do
+--- 277,281 ----
+  	case '[':
+  	  /* scan for ending `]', skipping over embedded [:...:] */
+! 	  bracklen = 1;
+  	  c = *pat++;
+  	  do
+***************
+*** 261,276 ****
+  	      if (c == 0)
+  		{
+! 	          matlen += pat - brack - 1;	/* incremented below */
+! 	          break;
+  	        }
+  	      else if (c == '\\')
+  		{
+! 		  c = *pat++;
+! 		  if (*pat == 0)
+! 		    break;
+  		}
+  	      else if (c == '[' && *pat == ':')	/* character class */
+  		{
+  		  pat++;
+  		  in_cclass = 1;
+  		}
+--- 283,306 ----
+  	      if (c == 0)
+  		{
+! 		  pat--;			/* back up to NUL */
+! 		  matlen += bracklen;
+! 		  goto bad_bracket;
+  	        }
+  	      else if (c == '\\')
+  		{
+! 		  /* *pat == backslash-escaped character */
+! 		  bracklen++;
+! 		  /* If the backslash or backslash-escape ends the string,
+! 		     bail.  The ++pat skips over the backslash escape */
+! 		  if (*pat == 0 || *++pat == 0)
+! 		    {
+! 		      matlen += bracklen;
+! 		      goto bad_bracket;
+! 		    }
+  		}
+  	      else if (c == '[' && *pat == ':')	/* character class */
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  in_cclass = 1;
+  		}
+***************
+*** 278,281 ****
+--- 308,312 ----
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  in_cclass = 0;
+  		}
+***************
+*** 283,288 ****
+  		{
+  		  pat++;
+  		  if (*pat == ']')	/* right bracket can appear as collating symbol */
+! 		    pat++;
+  		  in_collsym = 1;
+  		}
+--- 314,323 ----
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  if (*pat == ']')	/* right bracket can appear as collating symbol */
+! 		    {
+! 		      pat++;
+! 		      bracklen++;
+! 		    }
+  		  in_collsym = 1;
+  		}
+***************
+*** 290,293 ****
+--- 325,329 ----
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  in_collsym = 0;
+  		}
+***************
+*** 295,300 ****
+  		{
+  		  pat++;
+  		  if (*pat == ']')	/* right bracket can appear as equivalence class */
+! 		    pat++;
+  		  in_equiv = 1;
+  		}
+--- 331,340 ----
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  if (*pat == ']')	/* right bracket can appear as equivalence class */
+! 		    {
+! 		      pat++;
+! 		      bracklen++;
+! 		    }
+  		  in_equiv = 1;
+  		}
+***************
+*** 302,310 ****
+--- 342,354 ----
+  		{
+  		  pat++;
++ 		  bracklen++;
+  		  in_equiv = 0;
+  		}
++ 	      else
++ 		bracklen++;
+  	    }
+  	  while ((c = *pat++) != ']');
+  	  matlen++;		/* bracket expression can only match one char */
++ bad_bracket:
+  	  break;
+  	}
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-004 b/SOURCES/bash42-004
new file mode 100644
index 0000000..fe29f82
--- /dev/null
+++ b/SOURCES/bash42-004
@@ -0,0 +1,53 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-004
+
+Bug-Reported-by:	Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:	<201102182106.17834.vapier@gentoo.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00222.html
+
+Bug-Description:
+
+When used in contexts where word splitting and quote removal were not
+performed, such as pattern removal or pattern substitution, empty strings
+(either literal or resulting from quoted variables that were unset or
+null) were not matched correctly, resulting in failure.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2011-01-02 16:12:51.000000000 -0500
+--- subst.c	2011-02-18 22:30:13.000000000 -0500
+***************
+*** 3373,3379 ****
+    if (string == 0 || *string == '\0')
+      return (WORD_LIST *)NULL;
+  
+!   td.flags = 0;
+    td.word = string;
+    tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
+    return (tresult);
+--- 3373,3379 ----
+    if (string == 0 || *string == '\0')
+      return (WORD_LIST *)NULL;
+  
+!   td.flags = W_NOSPLIT2;		/* no splitting, remove "" and '' */
+    td.word = string;
+    tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
+    return (tresult);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-005 b/SOURCES/bash42-005
new file mode 100644
index 0000000..3ca9fc1
--- /dev/null
+++ b/SOURCES/bash42-005
@@ -0,0 +1,131 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-005
+
+Bug-Reported-by:	Dennis Williamson <dennistwilliamson@gmail.com>
+Bug-Reference-ID:	<AANLkTikDbEV5rnbPc0zOfmZfBcg0xGetzLLzK+KjRiNa@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00147.html
+
+Bug-Description:
+
+Systems that use tzset() to set the local timezone require the TZ variable
+to be in the environment.  Bash must make sure the environment has been
+modified with any updated value for TZ before calling tzset().  This
+affects prompt string expansions and the `%T' printf conversion specification
+on systems that do not allow bash to supply a replacement for getenv(3).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/variables.h	2010-12-02 20:22:01.000000000 -0500
+--- variables.h	2011-02-19 19:57:12.000000000 -0500
+***************
+*** 314,317 ****
+--- 314,318 ----
+  extern void sort_variables __P((SHELL_VAR **));
+  
++ extern int chkexport __P((char *));
+  extern void maybe_make_export_env __P((void));
+  extern void update_export_env_inplace __P((char *, int, char *));
+*** ../bash-4.2-patched/variables.c	2011-01-24 20:07:48.000000000 -0500
+--- variables.c	2011-02-19 20:04:50.000000000 -0500
+***************
+*** 3654,3657 ****
+--- 3654,3673 ----
+  }
+  
++ int
++ chkexport (name)
++      char *name;
++ {
++   SHELL_VAR *v;
++ 
++   v = find_variable (name);
++   if (exported_p (v))
++     {
++       array_needs_making = 1;
++       maybe_make_export_env ();
++       return 1;
++     }
++   return 0;
++ }
++ 
+  void
+  maybe_make_export_env ()
+***************
+*** 4215,4219 ****
+    { "TEXTDOMAINDIR", sv_locale },
+  
+! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
+    { "TZ", sv_tz },
+  #endif
+--- 4231,4235 ----
+    { "TEXTDOMAINDIR", sv_locale },
+  
+! #if defined (HAVE_TZSET)
+    { "TZ", sv_tz },
+  #endif
+***************
+*** 4559,4568 ****
+  #endif /* HISTORY */
+  
+! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
+  void
+  sv_tz (name)
+       char *name;
+  {
+!   tzset ();
+  }
+  #endif
+--- 4575,4585 ----
+  #endif /* HISTORY */
+  
+! #if defined (HAVE_TZSET)
+  void
+  sv_tz (name)
+       char *name;
+  {
+!   if (chkexport (name))
+!     tzset ();
+  }
+  #endif
+*** ../bash-4.2-patched/parse.y	2011-01-02 15:48:11.000000000 -0500
+--- parse.y	2011-02-19 20:05:00.000000000 -0500
+***************
+*** 5136,5139 ****
+--- 5136,5142 ----
+  	      /* Make the current time/date into a string. */
+  	      (void) time (&the_time);
++ #if defined (HAVE_TZSET)
++ 	      sv_tz ("TZ");		/* XXX -- just make sure */
++ #endif
+  	      tm = localtime (&the_time);
+  
+*** ../bash-4.2-patched/builtins/printf.def	2010-11-23 10:02:55.000000000 -0500
+--- builtins/printf.def	2011-02-19 20:05:04.000000000 -0500
+***************
+*** 466,469 ****
+--- 466,472 ----
+  		else
+  		  secs = arg;
++ #if defined (HAVE_TZSET)
++ 		sv_tz ("TZ");		/* XXX -- just make sure */
++ #endif
+  		tm = localtime (&secs);
+  		n = strftime (timebuf, sizeof (timebuf), timefmt, tm);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-006 b/SOURCES/bash42-006
new file mode 100644
index 0000000..be6e49c
--- /dev/null
+++ b/SOURCES/bash42-006
@@ -0,0 +1,46 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-006
+
+Bug-Reported-by:	Allan McRae <allan@archlinux.org>
+Bug-Reference-ID:	<4D6D0D0B.50908@archlinux.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00001.html
+
+Bug-Description:
+
+A problem with bash42-005 caused it to dump core if TZ was unset.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/variables.c	2011-02-25 12:07:41.000000000 -0500
+--- variables.c	2011-03-01 10:13:04.000000000 -0500
+***************
+*** 3661,3665 ****
+  
+    v = find_variable (name);
+!   if (exported_p (v))
+      {
+        array_needs_making = 1;
+--- 3661,3665 ----
+  
+    v = find_variable (name);
+!   if (v && exported_p (v))
+      {
+        array_needs_making = 1;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-007 b/SOURCES/bash42-007
new file mode 100644
index 0000000..d16156e
--- /dev/null
+++ b/SOURCES/bash42-007
@@ -0,0 +1,46 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-007
+
+Bug-Reported-by:	Matthias Klose <doko@debian.org>
+Bug-Reference-ID:	<4D6FD2AC.1010500@debian.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00015.html
+
+Bug-Description:
+
+When used in contexts where word splitting and quote removal were not
+performed, such as case statement word expansion, empty strings
+(either literal or resulting from quoted variables that were unset or
+null) were not expanded correctly, resulting in failure.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2011-02-25 12:03:58.000000000 -0500
+--- subst.c	2011-03-03 14:08:23.000000000 -0500
+***************
+*** 4609,4614 ****
+--- 4611,4617 ----
+    if (ifs_firstc == 0)
+  #endif
+      word->flags |= W_NOSPLIT;
++   word->flags |= W_NOSPLIT2;
+    result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+    expand_no_split_dollar_star = 0;
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-008 b/SOURCES/bash42-008
new file mode 100644
index 0000000..631abbd
--- /dev/null
+++ b/SOURCES/bash42-008
@@ -0,0 +1,74 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-008
+
+Bug-Reported-by:	Doug McMahon <mc2man@optonline.net>
+Bug-Reference-ID:	<1299441211.2535.11.camel@doug-XPS-M1330>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00050.html
+
+Bug-Description:
+
+Bash-4.2 does not attempt to save the shell history on receipt of a
+terminating signal that is handled synchronously.  Unfortunately, the
+`close' button on most X11 terminal emulators sends SIGHUP, which
+kills the shell.
+
+This is a very small patch to save the history in the case that an
+interactive shell receives a SIGHUP or SIGTERM while in readline and
+reading a command.
+
+The next version of bash will do this differently.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/sig.c	Tue Nov 23 08:21:22 2010
+--- sig.c	Tue Mar  8 21:28:32 2011
+***************
+*** 47,50 ****
+--- 47,51 ----
+  #if defined (READLINE)
+  #  include "bashline.h"
++ #  include <readline/readline.h>
+  #endif
+  
+***************
+*** 63,66 ****
+--- 64,68 ----
+  extern int history_lines_this_session;
+  #endif
++ extern int no_line_editing;
+  
+  extern void initialize_siglist ();
+***************
+*** 506,510 ****
+  #if defined (HISTORY)
+        /* XXX - will inhibit history file being written */
+!       history_lines_this_session = 0;
+  #endif
+        terminate_immediately = 0;
+--- 508,515 ----
+  #if defined (HISTORY)
+        /* XXX - will inhibit history file being written */
+! #  if defined (READLINE)
+!       if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0))
+! #  endif
+!         history_lines_this_session = 0;
+  #endif
+        terminate_immediately = 0;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-009 b/SOURCES/bash42-009
new file mode 100644
index 0000000..83a7e2c
--- /dev/null
+++ b/SOURCES/bash42-009
@@ -0,0 +1,82 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-009
+
+Bug-Reported-by:	<piuma@piumalab.org>
+Bug-Reference-ID:	<4DAAC0DB.7060606@piumalab.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00075.html
+
+Bug-Description:
+
+Under certain circumstances, running `fc -l' two times in succession with a
+relative history offset at the end of the history will result in an incorrect
+calculation of the last history entry and a seg fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/fc.def	2010-05-30 18:25:38.000000000 -0400
+--- builtins/fc.def	2011-04-19 15:46:17.000000000 -0400
+***************
+*** 305,309 ****
+  
+    /* XXX */
+!   if (saved_command_line_count > 0 && i == last_hist && hlist[last_hist] == 0)
+      while (last_hist >= 0 && hlist[last_hist] == 0)
+        last_hist--;
+--- 305,309 ----
+  
+    /* XXX */
+!   if (i == last_hist && hlist[last_hist] == 0)
+      while (last_hist >= 0 && hlist[last_hist] == 0)
+        last_hist--;
+***************
+*** 476,480 ****
+  {
+    int sign, n, clen, rh;
+!   register int i, j;
+    register char *s;
+  
+--- 476,480 ----
+  {
+    int sign, n, clen, rh;
+!   register int i, j, last_hist;
+    register char *s;
+  
+***************
+*** 496,500 ****
+       calculation as if it were on. */
+    rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
+!   i -= rh + hist_last_line_added;
+  
+    /* No specification defaults to most recent command. */
+--- 496,508 ----
+       calculation as if it were on. */
+    rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
+!   last_hist = i - rh - hist_last_line_added;
+! 
+!   if (i == last_hist && hlist[last_hist] == 0)
+!     while (last_hist >= 0 && hlist[last_hist] == 0)
+!       last_hist--;
+!   if (last_hist < 0)
+!     return (-1);
+! 
+!   i = last_hist;
+  
+    /* No specification defaults to most recent command. */
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-010 b/SOURCES/bash42-010
new file mode 100644
index 0000000..e408abd
--- /dev/null
+++ b/SOURCES/bash42-010
@@ -0,0 +1,61 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-010
+
+Bug-Reported-by:	Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:	<201104122356.20160.vapier@gentoo.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00058.html
+
+Bug-Description:
+
+Bash did not correctly print/reproduce here documents attached to commands
+inside compound commands such as arithmetic for loops and user-specified
+subshells.  This affected the execution of such commands inside a shell
+function when the function definition is saved and later restored using
+`.' or `eval'.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/print_cmd.c	2010-05-30 18:34:08.000000000 -0400
+--- print_cmd.c	2011-04-14 10:43:18.000000000 -0400
+***************
+*** 316,319 ****
+--- 317,321 ----
+  	  skip_this_indent++;
+  	  make_command_string_internal (command->value.Subshell->command);
++ 	  PRINT_DEFERRED_HEREDOCS ("");
+  	  cprintf (" )");
+  	  break;
+***************
+*** 593,596 ****
+--- 606,610 ----
+    indentation += indentation_amount;
+    make_command_string_internal (arith_for_command->action);
++   PRINT_DEFERRED_HEREDOCS ("");
+    semicolon ();
+    indentation -= indentation_amount;
+***************
+*** 654,657 ****
+--- 668,672 ----
+  
+    make_command_string_internal (group_command->command);
++   PRINT_DEFERRED_HEREDOCS ("");
+  
+    if (inside_function_def)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-011 b/SOURCES/bash42-011
new file mode 100644
index 0000000..26fdf65
--- /dev/null
+++ b/SOURCES/bash42-011
@@ -0,0 +1,46 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-011
+
+Bug-Reported-by:	"David Parks" <davidparks21@yahoo.com>
+Bug-Reference-ID:	<014101cc82c6$46ac1540$d4043fc0$@com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-10/msg00031.html
+
+Bug-Description:
+
+Overwriting a value in an associative array causes the memory allocated to
+store the key on the second and subsequent assignments to leak.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/assoc.c	2009-08-05 20:19:40.000000000 -0400
+--- assoc.c	2011-10-04 20:23:07.000000000 -0400
+***************
+*** 78,81 ****
+--- 78,86 ----
+    if (b == 0)
+      return -1;
++   /* If we are overwriting an existing element's value, we're not going to
++      use the key.  Nothing in the array assignment code path frees the key
++      string, so we can free it here to avoid a memory leak. */
++   if (b->key != key)
++     free (key);
+    FREE (b->data);
+    b->data = value ? savestring (value) : (char *)0;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-012 b/SOURCES/bash42-012
new file mode 100644
index 0000000..70f0a56
--- /dev/null
+++ b/SOURCES/bash42-012
@@ -0,0 +1,151 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-012
+
+Bug-Reported-by:	Rui Santos <rsantos@grupopie.com>
+Bug-Reference-ID:	<4E04C6D0.2020507@grupopie.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00079.html
+
+Bug-Description:
+
+When calling the parser to recursively parse a command substitution within
+an arithmetic expansion, the shell overwrote the saved shell input line and
+associated state, resulting in a garbled command.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/parse.y	2011-02-26 19:19:05.000000000 -0500
+--- parse.y	2011-06-24 20:08:22.000000000 -0400
+***************
+*** 3843,3846 ****
+--- 3849,3853 ----
+  {
+    sh_parser_state_t ps;
++   sh_input_line_state_t ls;
+    int orig_ind, nc, sflags;
+    char *ret, *s, *ep, *ostring;
+***************
+*** 3850,3857 ****
+--- 3857,3866 ----
+    ostring = string;
+  
++ /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
+    sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
+    if (flags & SX_NOLONGJMP)
+      sflags |= SEVAL_NOLONGJMP;
+    save_parser_state (&ps);
++   save_input_line_state (&ls);
+  
+    /*(*/
+***************
+*** 3862,3865 ****
+--- 3871,3876 ----
+    restore_parser_state (&ps);
+    reset_parser ();
++   /* reset_parser clears shell_input_line and associated variables */
++   restore_input_line_state (&ls);
+    if (interactive)
+      token_to_read = 0;
+***************
+*** 5909,5912 ****
+--- 5920,5929 ----
+    ps->echo_input_at_read = echo_input_at_read;
+  
++   ps->token = token;
++   ps->token_buffer_size = token_buffer_size;
++   /* Force reallocation on next call to read_token_word */
++   token = 0;
++   token_buffer_size = 0;
++ 
+    return (ps);
+  }
+***************
+*** 5950,5953 ****
+--- 5967,6006 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++ 
++   FREE (token);
++   token = ps->token;
++   token_buffer_size = ps->token_buffer_size;
++ }
++ 
++ sh_input_line_state_t *
++ save_input_line_state (ls)
++      sh_input_line_state_t *ls;
++ {
++   if (ls == 0)
++     ls = (sh_input_line_state_t *)xmalloc (sizeof (sh_input_line_state_t));
++   if (ls == 0)
++     return ((sh_input_line_state_t *)NULL);
++ 
++   ls->input_line = shell_input_line;
++   ls->input_line_size = shell_input_line_size;
++   ls->input_line_len = shell_input_line_len;
++   ls->input_line_index = shell_input_line_index;
++ 
++   /* force reallocation */
++   shell_input_line = 0;
++   shell_input_line_size = shell_input_line_len = shell_input_line_index = 0;
++ }
++ 
++ void
++ restore_input_line_state (ls)
++      sh_input_line_state_t *ls;
++ {
++   FREE (shell_input_line);
++   shell_input_line = ls->input_line;
++   shell_input_line_size = ls->input_line_size;
++   shell_input_line_len = ls->input_line_len;
++   shell_input_line_index = ls->input_line_index;
++ 
++   set_line_mbstate ();
+  }
+  
+*** ../bash-4.2-patched/shell.h	2011-01-06 22:16:55.000000000 -0500
+--- shell.h	2011-06-24 19:12:25.000000000 -0400
+***************
+*** 137,140 ****
+--- 139,145 ----
+    int *token_state;
+  
++   char *token;
++   int token_buffer_size;
++ 
+    /* input line state -- line number saved elsewhere */
+    int input_line_terminator;
+***************
+*** 167,171 ****
+--- 172,186 ----
+  } sh_parser_state_t;
+  
++ typedef struct _sh_input_line_state_t {
++   char *input_line;
++   int input_line_index;
++   int input_line_size;
++   int input_line_len;
++ } sh_input_line_state_t;
++ 
+  /* Let's try declaring these here. */
+  extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
+  extern void restore_parser_state __P((sh_parser_state_t *));
++ 
++ extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
++ extern void restore_input_line_state __P((sh_input_line_state_t *));
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-013 b/SOURCES/bash42-013
new file mode 100644
index 0000000..5bb186b
--- /dev/null
+++ b/SOURCES/bash42-013
@@ -0,0 +1,52 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-013
+
+Bug-Reported-by:	Marten Wikstrom <marten.wikstrom@keystream.se>
+Bug-Reference-ID:	<BANLkTikKECAh94ZEX68iQvxYuPeEM_xoSQ@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00049.html
+
+Bug-Description:
+
+An off-by-one error caused the shell to skip over CTLNUL characters,
+which are used internally to mark quoted null strings.  The effect
+was to have stray 0x7f characters left after expanding words like
+""""""""aa.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2011-03-06 14:11:11.000000000 -0500
+--- subst.c	2011-05-11 11:23:33.000000000 -0400
+***************
+*** 3707,3711 ****
+  	}
+        else if (string[i] == CTLNUL)
+! 	i++;
+  
+        prev_i = i;
+--- 3710,3717 ----
+  	}
+        else if (string[i] == CTLNUL)
+! 	{
+! 	  i++;
+! 	  continue;
+! 	}
+  
+        prev_i = i;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-014 b/SOURCES/bash42-014
new file mode 100644
index 0000000..a43271c
--- /dev/null
+++ b/SOURCES/bash42-014
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-014
+
+Bug-Reported-by:	Shawn Bohrer <sbohrer@rgmadvisors.com>
+Bug-Reference-ID:	<20110504152320.6E8F28130527@dev1.rgmadvisors.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00018.html
+
+Bug-Description:
+
+The regular expression matching operator did not correctly match
+expressions with an embedded ^A.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/pathexp.c	2010-08-13 23:21:57.000000000 -0400
+--- pathexp.c	2011-05-05 16:40:58.000000000 -0400
+***************
+*** 197,201 ****
+  	  if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
+  	    continue;
+! 	  if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
+  	    continue;
+  	  temp[j++] = '\\';
+--- 197,201 ----
+  	  if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
+  	    continue;
+! 	  if (pathname[i+1] != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
+  	    continue;
+  	  temp[j++] = '\\';
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-015 b/SOURCES/bash42-015
new file mode 100644
index 0000000..8655873
--- /dev/null
+++ b/SOURCES/bash42-015
@@ -0,0 +1,81 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-015
+
+Bug-Reported-by:	<dnade.ext@orange-ftgroup.com>
+Bug-Reference-ID:	<728_1312188080_4E3666B0_728_118711_1_3B5D3E0F95CC5C478D6500CDCE8B691F7AAAA4AA3D@PUEXCB2B.nanterre.francetelecom.fr>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00000.html
+
+Bug-Description:
+
+When in a context where arithmetic evaluation is not taking place, the
+evaluator should not check for division by 0.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/expr.c	2010-12-21 11:12:13.000000000 -0500
+--- expr.c	2011-08-02 20:58:28.000000000 -0400
+***************
+*** 477,480 ****
+--- 481,492 ----
+        if (special)
+  	{
++ 	  if ((op == DIV || op == MOD) && value == 0)
++ 	    {
++ 	      if (noeval == 0)
++ 		evalerror (_("division by 0"));
++ 	      else
++ 	        value = 1;
++ 	    }
++ 
+  	  switch (op)
+  	    {
+***************
+*** 483,493 ****
+  	      break;
+  	    case DIV:
+- 	      if (value == 0)
+- 		evalerror (_("division by 0"));
+  	      lvalue /= value;
+  	      break;
+  	    case MOD:
+- 	      if (value == 0)
+- 		evalerror (_("division by 0"));
+  	      lvalue %= value;
+  	      break;
+--- 495,501 ----
+***************
+*** 805,809 ****
+  
+        if (((op == DIV) || (op == MOD)) && (val2 == 0))
+! 	evalerror (_("division by 0"));
+  
+        if (op == MUL)
+--- 813,822 ----
+  
+        if (((op == DIV) || (op == MOD)) && (val2 == 0))
+! 	{
+! 	  if (noeval == 0)
+! 	    evalerror (_("division by 0"));
+! 	  else
+! 	    val2 = 1;
+! 	}
+  
+        if (op == MUL)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-016 b/SOURCES/bash42-016
new file mode 100644
index 0000000..4602588
--- /dev/null
+++ b/SOURCES/bash42-016
@@ -0,0 +1,46 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-016
+
+Bug-Reported-by:	Martin von Gagern <Martin.vGagern@gmx.net>
+Bug-Reference-ID:	<4E43AD9E.8060501@gmx.net>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00141.html
+
+Bug-Description:
+
+Bash should not check for mail while executing the `eval' builtin.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/parse.y	Fri Feb 25 12:07:41 2011
+--- parse.y	Thu Aug 11 19:02:26 2011
+***************
+*** 2500,2504 ****
+  	 is the mail alarm reset; nothing takes place in check_mail ()
+  	 except the checking of mail.  Please don't change this. */
+!       if (prompt_is_ps1 && time_to_check_mail ())
+  	{
+  	  check_mail ();
+--- 2498,2502 ----
+  	 is the mail alarm reset; nothing takes place in check_mail ()
+  	 except the checking of mail.  Please don't change this. */
+!       if (prompt_is_ps1 && parse_and_execute_level == 0 && time_to_check_mail ())
+  	{
+  	  check_mail ();
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-017 b/SOURCES/bash42-017
new file mode 100644
index 0000000..010ed1e
--- /dev/null
+++ b/SOURCES/bash42-017
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-017
+
+Bug-Reported-by:	Curtis Doty <Curtis@GreenKey.net>
+Bug-Reference-ID:	<20110621035324.A4F70849F59@mx1.iParadigms.net>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00053.html
+
+Bug-Description:
+
+Using `read -a foo' where foo was an already-declared associative array
+caused the shell to die with a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/read.def	2011-01-04 11:43:36.000000000 -0500
+--- builtins/read.def	2011-06-21 10:31:02.000000000 -0400
+***************
+*** 643,646 ****
+--- 642,651 ----
+  	  return EXECUTION_FAILURE;	/* readonly or noassign */
+  	}
++       if (assoc_p (var))
++ 	{
++           builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
++ 	  xfree (input_string);
++ 	  return EXECUTION_FAILURE;	/* existing associative array */
++ 	}
+        array_flush (array_cell (var));
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-018 b/SOURCES/bash42-018
new file mode 100644
index 0000000..5d11dce
--- /dev/null
+++ b/SOURCES/bash42-018
@@ -0,0 +1,74 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-018
+
+Bug-Reported-by:	Thomas Cort <tcort@minix3.org>
+Bug-Reference-ID:	<BANLkTik-ebGGw3k_1YtB=RyfV1bsqdxC_g@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00110.html
+
+Bug-Description:
+
+Bash fails to compile unless JOB_CONTROL is defined.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/execute_cmd.c	2011-02-09 17:32:25.000000000 -0500
+--- execute_cmd.c	2011-11-06 15:12:48.000000000 -0500
+***************
+*** 2197,2200 ****
+--- 2315,2319 ----
+      cmd->flags |= CMD_IGNORE_RETURN;
+  
++ #if defined (JOB_CONTROL)
+    lastpipe_flag = 0;
+    begin_unwind_frame ("lastpipe-exec");
+***************
+*** 2216,2228 ****
+  	  add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
+  	}
+!       cmd->flags |= CMD_LASTPIPE;
+      }	  
+    if (prev >= 0)
+      add_unwind_protect (close, prev);
+  
+    exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
+  
+    if (lstdin > 0)
+      restore_stdin (lstdin);
+  
+    if (prev >= 0)
+--- 2335,2351 ----
+  	  add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
+  	}
+!       if (cmd)
+! 	cmd->flags |= CMD_LASTPIPE;
+      }	  
+    if (prev >= 0)
+      add_unwind_protect (close, prev);
++ #endif
+  
+    exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
+  
++ #if defined (JOB_CONTROL)
+    if (lstdin > 0)
+      restore_stdin (lstdin);
++ #endif
+  
+    if (prev >= 0)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-019 b/SOURCES/bash42-019
new file mode 100644
index 0000000..5fce40a
--- /dev/null
+++ b/SOURCES/bash42-019
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-019
+
+Bug-Reported-by:	Diego Augusto Molina <diegoaugustomolina@gmail.com>
+Bug-Reference-ID:	<CAGOxLdHcSQu3ck9Qy3pRjj_NBU5tAPSAvNm-95-nLQ9Szwb6aA@mail.gmail.com>
+Bug-Reference-URL:	lists.gnu.org/archive/html/bug-bash/2011-09/msg00047.html
+
+Bug-Description:
+
+Using `declare' with attributes and an invalid array variable name or
+assignment reference resulted in a segmentation fault instead of a
+declaration error.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/declare.def	2010-05-30 18:25:21.000000000 -0400
+--- builtins/declare.def	2011-09-15 15:20:20.000000000 -0400
+***************
+*** 514,517 ****
+--- 514,522 ----
+  	      var = assign_array_element (name, value, 0);	/* XXX - not aflags */
+  	      *subscript_start = '\0';
++ 	      if (var == 0)	/* some kind of assignment error */
++ 		{
++ 		  assign_error++;
++ 		  NEXT_VARIABLE ();
++ 		}
+  	    }
+  	  else if (simple_array_assign)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-020 b/SOURCES/bash42-020
new file mode 100644
index 0000000..a1dd044
--- /dev/null
+++ b/SOURCES/bash42-020
@@ -0,0 +1,60 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-020
+
+Bug-Reported-by:	Vincent Sheffer <vince.sheffer@apisphere.com>
+Bug-Reference-ID:	<F13C1C4F-C44C-4071-BFED-4BB6D13CF92F@apisphere.com>
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html
+
+Bug-Description:
+
+The shared object helper script needs to be updated for Mac OS X 10.7
+(Lion, darwin11).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/support/shobj-conf	2009-10-28 09:20:21.000000000 -0400
+--- support/shobj-conf	2011-08-27 13:25:23.000000000 -0400
+***************
+*** 158,162 ****
+  
+  # Darwin/MacOS X
+! darwin[89]*|darwin10*)
+  	SHOBJ_STATUS=supported
+  	SHLIB_STATUS=supported
+--- 172,176 ----
+  
+  # Darwin/MacOS X
+! darwin[89]*|darwin1[012]*)
+  	SHOBJ_STATUS=supported
+  	SHLIB_STATUS=supported
+***************
+*** 187,191 ****
+  
+  	case "${host_os}" in
+! 	darwin[789]*|darwin10*)	SHOBJ_LDFLAGS=''
+  			SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+  			;;
+--- 201,205 ----
+  
+  	case "${host_os}" in
+! 	darwin[789]*|darwin1[012]*)	SHOBJ_LDFLAGS=''
+  			SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+  			;;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-021 b/SOURCES/bash42-021
new file mode 100644
index 0000000..b6153c7
--- /dev/null
+++ b/SOURCES/bash42-021
@@ -0,0 +1,61 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-021
+
+Bug-Reported-by:	Dan Douglas <ormaaj@gmail.com>
+Bug-Reference-ID:	<4585554.nZWb4q7YoZ@smorgbox>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-12/msg00084.html
+
+Bug-Description:
+
+Using `read -N' to assign values to an array can result in NUL values being
+assigned to some array elements.  These values cause seg faults when referenced
+later.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/read.def	2011-11-21 18:03:38.000000000 -0500
+--- builtins/read.def	2011-12-19 19:52:12.000000000 -0500
+***************
+*** 738,742 ****
+  	    }
+  	  else
+! 	    var = bind_read_variable (varname, t);
+  	}
+        else
+--- 775,779 ----
+  	    }
+  	  else
+! 	    var = bind_read_variable (varname, t ? t : "");
+  	}
+        else
+***************
+*** 799,803 ****
+      }
+    else
+!     var = bind_read_variable (list->word->word, input_string);
+  
+    if (var)
+--- 836,840 ----
+      }
+    else
+!     var = bind_read_variable (list->word->word, input_string ? input_string : "");
+  
+    if (var)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-022 b/SOURCES/bash42-022
new file mode 100644
index 0000000..0067b13
--- /dev/null
+++ b/SOURCES/bash42-022
@@ -0,0 +1,61 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-022
+
+Bug-Reported-by:	Gregory Margo <gmargo@pacbell.net>
+Bug-Reference-ID:	<20110727174529.GA3333@pacbell.net>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-07/msg00102.html
+
+Bug-Description:
+
+The return value from lseek is `off_t'.  This can cause corrupted return
+values when the file offset is greater than 2**31 - 1.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/sh/zread.c	Mon Mar  2 08:54:45 2009
+--- lib/sh/zread.c	Thu Jul 28 18:16:53 2011
+***************
+*** 161,166 ****
+       int fd;
+  {
+!   off_t off;
+!   int r;
+  
+    off = lused - lind;
+--- 161,165 ----
+       int fd;
+  {
+!   off_t off, r;
+  
+    off = lused - lind;
+***************
+*** 169,173 ****
+      r = lseek (fd, -off, SEEK_CUR);
+  
+!   if (r >= 0)
+      lused = lind = 0;
+  }
+--- 168,172 ----
+      r = lseek (fd, -off, SEEK_CUR);
+  
+!   if (r != -1)
+      lused = lind = 0;
+  }
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-023 b/SOURCES/bash42-023
new file mode 100644
index 0000000..4f204ef
--- /dev/null
+++ b/SOURCES/bash42-023
@@ -0,0 +1,62 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-023
+
+Bug-Reported-by:	Ewan Mellor <Ewan.Mellor@eu.citrix.com>
+Bug-Reference-ID:	<6005BE083BF501439A84DC3523BAC82DC4B964FD12@LONPMAILBOX01.citrite.net>
+Bug-Reference-URL:	
+
+Bug-Description:
+
+Under some circumstances, an exit trap triggered by a bad substitution
+error when errexit is enabled will cause the shell to exit with an
+incorrect exit status (0).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2011-11-21 12:04:38.000000000 -0500
+--- subst.c	2012-02-08 13:36:28.000000000 -0500
+***************
+*** 7275,7278 ****
+--- 7281,7285 ----
+      case '\0':
+      bad_substitution:
++       last_command_exit_value = EXECUTION_FAILURE;
+        report_error (_("%s: bad substitution"), string ? string : "??");
+        FREE (value);
+*** ../bash-4.2-patched/error.c	2009-08-21 22:31:31.000000000 -0400
+--- error.c	2012-02-25 15:54:40.000000000 -0500
+***************
+*** 201,205 ****
+    va_end (args);
+    if (exit_immediately_on_error)
+!     exit_shell (1);
+  }
+  
+--- 201,209 ----
+    va_end (args);
+    if (exit_immediately_on_error)
+!     {
+!       if (last_command_exit_value == 0)
+! 	last_command_exit_value = 1;
+!       exit_shell (last_command_exit_value);
+!     }
+  }
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-024 b/SOURCES/bash42-024
new file mode 100644
index 0000000..b7b1158
--- /dev/null
+++ b/SOURCES/bash42-024
@@ -0,0 +1,45 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-024
+
+Bug-Reported-by:	Jim Avera <james_avera@yahoo.com>
+Bug-Reference-ID:	<4F29E07A.80405@yahoo.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-02/msg00001.html
+
+Bug-Description:
+
+When `printf -v' is used to set an array element, the format string contains
+`%b', and the corresponding argument is the empty string, the buffer used
+to store the value to be assigned can be NULL, which results in NUL being
+assigned to the array element.  This causes a seg fault when it's used later.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/printf.def	2011-02-25 12:07:41.000000000 -0500
+--- builtins/printf.def	2012-02-02 08:37:12.000000000 -0500
+***************
+*** 256,259 ****
+--- 257,262 ----
+  	    {
+  	      vflag = 1;
++ 	      if (vbsize == 0)
++ 		vbuf = xmalloc (vbsize = 16);
+  	      vblen = 0;
+  	      if (vbuf)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-025 b/SOURCES/bash42-025
new file mode 100644
index 0000000..34ac343
--- /dev/null
+++ b/SOURCES/bash42-025
@@ -0,0 +1,143 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-025
+
+Bug-Reported-by:	Bill Gradwohl <bill@ycc.com>
+Bug-Reference-ID:	<CAFyvKis-UfuOWr5THBRKh=vYHDoKEEgdW8hN1RviTuYQ00Lu5A@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/help-bash/2012-03/msg00078.html
+
+Bug-Description:
+
+When used in a shell function, `declare -g -a array=(compound assignment)'
+creates a local variable instead of a global one.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/command.h	2010-08-02 19:36:51.000000000 -0400
+--- command.h	2012-04-01 12:38:35.000000000 -0400
+***************
+*** 98,101 ****
+--- 98,102 ----
+  #define W_ASSIGNASSOC	0x400000	/* word looks like associative array assignment */
+  #define W_ARRAYIND	0x800000	/* word is an array index being expanded */
++ #define W_ASSNGLOBAL	0x1000000	/* word is a global assignment to declare (declare/typeset -g) */
+  
+  /* Possible values for subshell_environment */
+*** ../bash-4.2-patched/execute_cmd.c	2011-11-21 18:03:41.000000000 -0500
+--- execute_cmd.c	2012-04-01 12:42:03.000000000 -0400
+***************
+*** 3581,3585 ****
+    WORD_LIST *w;
+    struct builtin *b;
+!   int assoc;
+  
+    if (words == 0)
+--- 3581,3585 ----
+    WORD_LIST *w;
+    struct builtin *b;
+!   int assoc, global;
+  
+    if (words == 0)
+***************
+*** 3587,3591 ****
+  
+    b = 0;
+!   assoc = 0;
+  
+    for (w = words; w; w = w->next)
+--- 3587,3591 ----
+  
+    b = 0;
+!   assoc = global = 0;
+  
+    for (w = words; w; w = w->next)
+***************
+*** 3604,3607 ****
+--- 3604,3609 ----
+  	if (assoc)
+  	  w->word->flags |= W_ASSIGNASSOC;
++ 	if (global)
++ 	  w->word->flags |= W_ASSNGLOBAL;
+  #endif
+        }
+***************
+*** 3609,3613 ****
+      /* Note that we saw an associative array option to a builtin that takes
+         assignment statements.  This is a bit of a kludge. */
+!     else if (w->word->word[0] == '-' && strchr (w->word->word, 'A'))
+        {
+  	if (b == 0)
+--- 3611,3618 ----
+      /* Note that we saw an associative array option to a builtin that takes
+         assignment statements.  This is a bit of a kludge. */
+!     else if (w->word->word[0] == '-' && (strchr (w->word->word+1, 'A') || strchr (w->word->word+1, 'g')))
+! #else
+!     else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g'))
+! #endif
+        {
+  	if (b == 0)
+***************
+*** 3619,3626 ****
+  	      words->word->flags |= W_ASSNBLTIN;
+  	  }
+! 	if (words->word->flags & W_ASSNBLTIN)
+  	  assoc = 1;
+        }
+- #endif
+  }
+  
+--- 3624,3632 ----
+  	      words->word->flags |= W_ASSNBLTIN;
+  	  }
+! 	if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'A'))
+  	  assoc = 1;
++ 	if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g'))
++ 	  global = 1;
+        }
+  }
+  
+*** ../bash-4.2-patched/subst.c	2012-03-11 17:35:13.000000000 -0400
+--- subst.c	2012-04-01 12:38:35.000000000 -0400
+***************
+*** 367,370 ****
+--- 367,375 ----
+        fprintf (stderr, "W_ASSNBLTIN%s", f ? "|" : "");
+      }
++   if (f & W_ASSNGLOBAL)
++     {
++       f &= ~W_ASSNGLOBAL;
++       fprintf (stderr, "W_ASSNGLOBAL%s", f ? "|" : "");
++     }
+    if (f & W_COMPASSIGN)
+      {
+***************
+*** 2804,2808 ****
+    else if (assign_list)
+      {
+!       if (word->flags & W_ASSIGNARG)
+  	aflags |= ASS_MKLOCAL;
+        if (word->flags & W_ASSIGNASSOC)
+--- 2809,2813 ----
+    else if (assign_list)
+      {
+!       if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0)
+  	aflags |= ASS_MKLOCAL;
+        if (word->flags & W_ASSIGNASSOC)
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-026 b/SOURCES/bash42-026
new file mode 100644
index 0000000..e15d748
--- /dev/null
+++ b/SOURCES/bash42-026
@@ -0,0 +1,58 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-026
+
+Bug-Reported-by:	Greg Wooledge <wooledg@eeg.ccf.org>
+Bug-Reference-ID:	<20120425180443.GO22241@eeg.ccf.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00172.html
+
+Bug-Description:
+
+The `lastpipe' option does not behave correctly on machines where the
+open file limit is less than 256.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/execute_cmd.c	2011-11-21 12:04:47.000000000 -0500
+--- execute_cmd.c	2012-04-26 11:09:30.000000000 -0400
+***************
+*** 2206,2210 ****
+    if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
+      {
+!       lstdin = move_to_high_fd (0, 0, 255);
+        if (lstdin > 0)
+  	{
+--- 2325,2329 ----
+    if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
+      {
+!       lstdin = move_to_high_fd (0, 1, -1);
+        if (lstdin > 0)
+  	{
+***************
+*** 2252,2256 ****
+--- 2371,2377 ----
+      }
+  
++ #if defined (JOB_CONTROL)
+    discard_unwind_frame ("lastpipe-exec");
++ #endif
+  
+    return (exec_result);
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-027 b/SOURCES/bash42-027
new file mode 100644
index 0000000..c0c5d3f
--- /dev/null
+++ b/SOURCES/bash42-027
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-027
+
+Bug-Reported-by:	Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:	<201204211243.30163.vapier@gentoo.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00134.html
+
+Bug-Description:
+
+When the `extglob' shell option is enabled, pattern substitution does not
+work correctly in the presence of multibyte characters.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2012-03-11 17:52:57.000000000 -0400
+--- subst.c	2012-04-22 16:19:10.000000000 -0400
+***************
+*** 4167,4171 ****
+  #if defined (EXTENDED_GLOB)
+    if (extended_glob)
+!     simple |= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
+  #endif
+  
+--- 4167,4171 ----
+  #if defined (EXTENDED_GLOB)
+    if (extended_glob)
+!     simple &= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
+  #endif
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 27
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-028 b/SOURCES/bash42-028
new file mode 100644
index 0000000..fa3be3b
--- /dev/null
+++ b/SOURCES/bash42-028
@@ -0,0 +1,52 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-028
+
+Bug-Reported-by:	Mark Edgar <medgar123@gmail.com>
+Bug-Reference-ID:	<CABHMh_3d+ZgO_zaEtYXPwK4P7tC0ghZ4g=Ue_TRpsEMf5YDsqw@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00109.html
+
+Bug-Description:
+
+When using a word expansion for which the right hand side is evaluated,
+certain expansions of quoted null strings include spurious ^? characters.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2012-03-11 17:35:13.000000000 -0400
+--- subst.c	2012-03-20 19:30:13.000000000 -0400
+***************
+*** 5810,5813 ****
+--- 5810,5823 ----
+        if (qdollaratp && ((hasdol && quoted) || l->next))
+  	*qdollaratp = 1;
++       /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is
++ 	 a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the
++ 	 flags indicate it (l->word->flags & W_HASQUOTEDNULL), and the
++ 	 expansion is quoted (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
++ 	 (which is more paranoia than anything else), we need to return the
++ 	 quoted null string and set the flags to indicate it. */
++       if (l->next == 0 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL(temp) && QUOTED_NULL(l->word->word) && (l->word->flags & W_HASQUOTEDNULL))
++ 	{
++ 	  w->flags |= W_HASQUOTEDNULL;
++ 	}
+        dispose_words (l);
+      }
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 27
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 28
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-029 b/SOURCES/bash42-029
new file mode 100644
index 0000000..c51704c
--- /dev/null
+++ b/SOURCES/bash42-029
@@ -0,0 +1,524 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-029
+
+Bug-Reported-by:	"Michael Kalisz" <michael@kalisz.homelinux.net>
+Bug-Reference-ID:	<50241.78.69.11.112.1298585641.squirrel@kalisz.homelinux.net>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
+
+Bug-Description:
+
+Bash-4.2 tries to leave completed directory names as the user typed them,
+without expanding them to a full pathname.  One effect of this is that
+shell variables used in pathnames being completed (e.g., $HOME) are left
+unchanged, but the `$' is quoted by readline because it is a special
+character to the shell.
+
+This patch introduces two things:
+
+1.  A new shell option, `direxpand', which, if set, attempts to emulate the
+    bash-4.1 behavior of expanding words to full pathnames during
+    completion;
+2.  A set of heuristics that reduce the number of times special characters
+    such as `$' are quoted when the directory name is not expanded.
+
+Patch (apply with `patch -p0'):
+
+diff -NrC 2 ../bash-4.2-patched/bashline.c ./bashline.c
+*** ../bash-4.2-patched/bashline.c	2011-01-16 15:32:47.000000000 -0500
+--- ./bashline.c	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 122,125 ****
+--- 122,128 ----
+  static int bash_push_line __P((void));
+  
++ static rl_icppfunc_t *save_directory_hook __P((void));
++ static void reset_directory_hook __P((rl_icppfunc_t *));
++ 
+  static void cleanup_expansion_error __P((void));
+  static void maybe_make_readline_line __P((char *));
+***************
+*** 244,251 ****
+--- 247,261 ----
+  int dircomplete_spelling = 0;
+  
++ /* Expand directory names during word/filename completion. */
++ int dircomplete_expand = 0;
++ int dircomplete_expand_relpath = 0;
++ 
+  static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
+  static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
+  /* )) */
+  
++ static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~";	/*}*/
++ static char *custom_filename_quote_characters = 0;
++ 
+  static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
+  
+***************
+*** 502,506 ****
+    /* Tell the completer that we might want to follow symbolic links or
+       do other expansion on directory names. */
+!   rl_directory_rewrite_hook = bash_directory_completion_hook;
+  
+    rl_filename_rewrite_hook = bash_filename_rewrite_hook;
+--- 512,516 ----
+    /* Tell the completer that we might want to follow symbolic links or
+       do other expansion on directory names. */
+!   set_directory_hook ();
+  
+    rl_filename_rewrite_hook = bash_filename_rewrite_hook;
+***************
+*** 530,534 ****
+  
+    /* characters that need to be quoted when appearing in filenames. */
+!   rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~";	/*}*/
+  
+    rl_filename_quoting_function = bash_quote_filename;
+--- 540,544 ----
+  
+    /* characters that need to be quoted when appearing in filenames. */
+!   rl_filename_quote_characters = default_filename_quote_characters;
+  
+    rl_filename_quoting_function = bash_quote_filename;
+***************
+*** 565,570 ****
+    rl_attempted_completion_function = attempt_shell_completion;
+    rl_completion_entry_function = NULL;
+-   rl_directory_rewrite_hook = bash_directory_completion_hook;
+    rl_ignore_some_completions_function = filename_completion_ignore;
+  }
+  
+--- 575,582 ----
+    rl_attempted_completion_function = attempt_shell_completion;
+    rl_completion_entry_function = NULL;
+    rl_ignore_some_completions_function = filename_completion_ignore;
++   rl_filename_quote_characters = default_filename_quote_characters;
++ 
++   set_directory_hook ();
+  }
+  
+***************
+*** 1280,1283 ****
+--- 1292,1298 ----
+    rl_ignore_some_completions_function = filename_completion_ignore;
+  
++   rl_filename_quote_characters = default_filename_quote_characters;
++   set_directory_hook ();
++ 
+    /* Determine if this could be a command word.  It is if it appears at
+       the start of the line (ignoring preceding whitespace), or if it
+***************
+*** 1592,1595 ****
+--- 1607,1616 ----
+  	  else
+  	    {
++ 	     if (dircomplete_expand && dot_or_dotdot (filename_hint))
++ 		{
++ 		  dircomplete_expand = 0;
++ 		  set_directory_hook ();
++ 		  dircomplete_expand = 1;
++ 		}
+  	      mapping_over = 4;
+  	      goto inner;
+***************
+*** 1792,1795 ****
+--- 1813,1819 ----
+   inner:
+    val = rl_filename_completion_function (filename_hint, istate);
++   if (mapping_over == 4 && dircomplete_expand)
++     set_directory_hook ();
++ 
+    istate = 1;
+  
+***************
+*** 2694,2697 ****
+--- 2718,2767 ----
+  }
+  
++ /* Functions to save and restore the appropriate directory hook */
++ /* This is not static so the shopt code can call it */
++ void
++ set_directory_hook ()
++ {
++   if (dircomplete_expand)
++     {
++       rl_directory_completion_hook = bash_directory_completion_hook;
++       rl_directory_rewrite_hook = (rl_icppfunc_t *)0;
++     }
++   else
++     {
++       rl_directory_rewrite_hook = bash_directory_completion_hook;
++       rl_directory_completion_hook = (rl_icppfunc_t *)0;
++     }
++ }
++ 
++ static rl_icppfunc_t *
++ save_directory_hook ()
++ {
++   rl_icppfunc_t *ret;
++ 
++   if (dircomplete_expand)
++     {
++       ret = rl_directory_completion_hook;
++       rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
++     }
++   else
++     {
++       ret = rl_directory_rewrite_hook;
++       rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
++     }
++ 
++   return ret;
++ }
++ 
++ static void
++ restore_directory_hook (hookf)
++      rl_icppfunc_t *hookf;
++ {
++   if (dircomplete_expand)
++     rl_directory_completion_hook = hookf;
++   else
++     rl_directory_rewrite_hook = hookf;
++ }
++ 
+  /* Handle symbolic link references and other directory name
+     expansions while hacking completion.  This should return 1 if it modifies
+***************
+*** 2703,2720 ****
+  {
+    char *local_dirname, *new_dirname, *t;
+!   int return_value, should_expand_dirname;
+    WORD_LIST *wl;
+    struct stat sb;
+  
+!   return_value = should_expand_dirname = 0;
+    local_dirname = *dirname;
+  
+!   if (mbschr (local_dirname, '$'))
+!     should_expand_dirname = 1;
+    else
+      {
+        t = mbschr (local_dirname, '`');
+        if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
+! 	should_expand_dirname = 1;
+      }
+  
+--- 2773,2801 ----
+  {
+    char *local_dirname, *new_dirname, *t;
+!   int return_value, should_expand_dirname, nextch, closer;
+    WORD_LIST *wl;
+    struct stat sb;
+  
+!   return_value = should_expand_dirname = nextch = closer = 0;
+    local_dirname = *dirname;
+  
+!   if (t = mbschr (local_dirname, '$'))
+!     {
+!       should_expand_dirname = '$';
+!       nextch = t[1];
+!       /* Deliberately does not handle the deprecated $[...] arithmetic
+! 	 expansion syntax */
+!       if (nextch == '(')
+! 	closer = ')';
+!       else if (nextch == '{')
+! 	closer = '}';
+!       else
+! 	nextch = 0;
+!     }
+    else
+      {
+        t = mbschr (local_dirname, '`');
+        if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
+! 	should_expand_dirname = '`';
+      }
+  
+***************
+*** 2740,2743 ****
+--- 2821,2841 ----
+  	  dispose_words (wl);
+  	  local_dirname = *dirname;
++ 	  /* XXX - change rl_filename_quote_characters here based on
++ 	     should_expand_dirname/nextch/closer.  This is the only place
++ 	     custom_filename_quote_characters is modified. */
++ 	  if (rl_filename_quote_characters && *rl_filename_quote_characters)
++ 	    {
++ 	      int i, j, c;
++ 	      i = strlen (default_filename_quote_characters);
++ 	      custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
++ 	      for (i = j = 0; c = default_filename_quote_characters[i]; i++)
++ 		{
++ 		  if (c == should_expand_dirname || c == nextch || c == closer)
++ 		    continue;
++ 		  custom_filename_quote_characters[j++] = c;
++ 		}
++ 	      custom_filename_quote_characters[j] = '\0';
++ 	      rl_filename_quote_characters = custom_filename_quote_characters;
++ 	    }
+  	}
+        else
+***************
+*** 2759,2762 ****
+--- 2857,2871 ----
+      }
+  
++   /* no_symbolic_links == 0 -> use (default) logical view of the file system.
++      local_dirname[0] == '.' && local_dirname[1] == '/' means files in the
++      current directory (./).
++      local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames
++      in the current directory (e.g., lib/sh).
++      XXX - should we do spelling correction on these? */
++ 
++   /* This is test as it was in bash-4.2: skip relative pathnames in current
++      directory.  Change test to
++       (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/'))
++      if we want to skip paths beginning with ./ also. */
+    if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1]))
+      {
+***************
+*** 2764,2767 ****
+--- 2873,2885 ----
+        int len1, len2;
+  
++       /* If we have a relative path
++       		(local_dirname[0] != '/' && local_dirname[0] != '.')
++ 	 that is canonical after appending it to the current directory, then
++ 	 	temp1 = temp2+'/'
++ 	 That is,
++ 	 	strcmp (temp1, temp2) == 0
++ 	 after adding a slash to temp2 below.  It should be safe to not
++ 	 change those.
++       */
+        t = get_working_directory ("symlink-hook");
+        temp1 = make_absolute (local_dirname, t);
+***************
+*** 2798,2802 ****
+  	    }
+  	}
+!       return_value |= STREQ (local_dirname, temp2) == 0;
+        free (local_dirname);
+        *dirname = temp2;
+--- 2916,2928 ----
+  	    }
+  	}
+! 
+!       /* dircomplete_expand_relpath == 0 means we want to leave relative
+! 	 pathnames that are unchanged by canonicalization alone.
+! 	 *local_dirname != '/' && *local_dirname != '.' == relative pathname
+! 	 (consistent with general.c:absolute_pathname())
+! 	 temp1 == temp2 (after appending a slash to temp2) means the pathname
+! 	 is not changed by canonicalization as described above. */
+!       if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0))
+! 	return_value |= STREQ (local_dirname, temp2) == 0;
+        free (local_dirname);
+        *dirname = temp2;
+***************
+*** 3003,3012 ****
+    orig_func = rl_completion_entry_function;
+    orig_attempt_func = rl_attempted_completion_function;
+-   orig_dir_func = rl_directory_rewrite_hook;
+    orig_ignore_func = rl_ignore_some_completions_function;
+    orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
+    rl_completion_entry_function = rl_filename_completion_function;
+    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
+-   rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
+    rl_ignore_some_completions_function = filename_completion_ignore;
+    rl_completer_word_break_characters = " \t\n\"\'";
+--- 3129,3139 ----
+    orig_func = rl_completion_entry_function;
+    orig_attempt_func = rl_attempted_completion_function;
+    orig_ignore_func = rl_ignore_some_completions_function;
+    orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
++ 
++   orig_dir_func = save_directory_hook ();
++ 
+    rl_completion_entry_function = rl_filename_completion_function;
+    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
+    rl_ignore_some_completions_function = filename_completion_ignore;
+    rl_completer_word_break_characters = " \t\n\"\'";
+***************
+*** 3016,3023 ****
+    rl_completion_entry_function = orig_func;
+    rl_attempted_completion_function = orig_attempt_func;
+-   rl_directory_rewrite_hook = orig_dir_func;
+    rl_ignore_some_completions_function = orig_ignore_func;
+    rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
+  
+    return r;
+  }
+--- 3143,3151 ----
+    rl_completion_entry_function = orig_func;
+    rl_attempted_completion_function = orig_attempt_func;
+    rl_ignore_some_completions_function = orig_ignore_func;
+    rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
+  
++   restore_directory_hook (orig_dir_func);
++ 
+    return r;
+  }
+diff -NrC 2 ../bash-4.2-patched/bashline.h ./bashline.h
+*** ../bash-4.2-patched/bashline.h	2009-01-04 14:32:22.000000000 -0500
+--- ./bashline.h	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 34,41 ****
+--- 34,46 ----
+  extern int bash_re_edit __P((char *));
+  
++ extern void bashline_set_event_hook __P((void));
++ extern void bashline_reset_event_hook __P((void));
++ 
+  extern int bind_keyseq_to_unix_command __P((char *));
+  
+  extern char **bash_default_completion __P((const char *, int, int, int, int));
+  
++ void set_directory_hook __P((void));
++ 
+  /* Used by programmable completion code. */
+  extern char *command_word_completion_function __P((const char *, int));
+diff -NrC 2 ../bash-4.2-patched/builtins/shopt.def ./builtins/shopt.def
+*** ../bash-4.2-patched/builtins/shopt.def	2010-07-02 22:42:44.000000000 -0400
+--- ./builtins/shopt.def	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 62,65 ****
+--- 62,69 ----
+  #include "bashgetopt.h"
+  
++ #if defined (READLINE)
++ #  include "../bashline.h"
++ #endif
++ 
+  #if defined (HISTORY)
+  #  include "../bashhist.h"
+***************
+*** 95,99 ****
+  extern int no_empty_command_completion;
+  extern int force_fignore;
+! extern int dircomplete_spelling;
+  
+  extern int enable_hostname_completion __P((int));
+--- 99,103 ----
+  extern int no_empty_command_completion;
+  extern int force_fignore;
+! extern int dircomplete_spelling, dircomplete_expand;
+  
+  extern int enable_hostname_completion __P((int));
+***************
+*** 122,125 ****
+--- 126,133 ----
+  #endif
+  
++ #if defined (READLINE)
++ static int shopt_set_complete_direxpand __P((char *, int));
++ #endif
++ 
+  static int shopt_login_shell;
+  static int shopt_compat31;
+***************
+*** 151,154 ****
+--- 159,163 ----
+    { "compat41", &shopt_compat41, set_compatibility_level },
+  #if defined (READLINE)
++   { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand },
+    { "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL },
+  #endif
+***************
+*** 536,539 ****
+--- 545,559 ----
+  }
+  
++ #if defined (READLINE)
++ static int
++ shopt_set_complete_direxpand (option_name, mode)
++      char *option_name;
++      int mode;
++ {
++   set_directory_hook ();
++   return 0;
++ }
++ #endif
++ 
+  #if defined (RESTRICTED_SHELL)
+  /* Don't allow the value of restricted_shell to be modified. */
+Binary files ../bash-4.2-patched/doc/._bashref.pdf and ./doc/._bashref.pdf differ
+diff -NrC 2 ../bash-4.2-patched/doc/bash.1 ./doc/bash.1
+*** ../bash-4.2-patched/doc/bash.1	2011-01-16 15:31:39.000000000 -0500
+--- ./doc/bash.1	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 8949,8952 ****
+--- 8949,8962 ----
+  The default bash behavior remains as in previous versions.
+  .TP 8
++ .B direxpand
++ If set,
++ .B bash
++ replaces directory names with the results of word expansion when performing
++ filename completion.  This changes the contents of the readline editing
++ buffer.
++ If not set,
++ .B bash
++ attempts to preserve what the user typed.
++ .TP 8
+  .B dirspell
+  If set,
+diff -NrC 2 ../bash-4.2-patched/doc/bashref.texi ./doc/bashref.texi
+*** ../bash-4.2-patched/doc/bashref.texi	2011-01-16 15:31:57.000000000 -0500
+--- ./doc/bashref.texi	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 4536,4539 ****
+--- 4536,4546 ----
+  The default Bash behavior remains as in previous versions.
+  
++ @item direxpand
++ If set, Bash
++ replaces directory names with the results of word expansion when performing
++ filename completion.  This changes the contents of the readline editing
++ buffer.
++ If not set, Bash attempts to preserve what the user typed.
++ 
+  @item dirspell
+  If set, Bash
+diff -NrC 2 ../bash-4.2-patched/tests/shopt.right ./tests/shopt.right
+*** ../bash-4.2-patched/tests/shopt.right	2010-07-02 23:36:30.000000000 -0400
+--- ./tests/shopt.right	2012-05-07 16:27:18.000000000 -0400
+***************
+*** 13,16 ****
+--- 13,17 ----
+  shopt -u compat40
+  shopt -u compat41
++ shopt -u direxpand
+  shopt -u dirspell
+  shopt -u dotglob
+***************
+*** 69,72 ****
+--- 70,74 ----
+  shopt -u compat40
+  shopt -u compat41
++ shopt -u direxpand
+  shopt -u dirspell
+  shopt -u dotglob
+***************
+*** 102,105 ****
+--- 104,108 ----
+  compat40       	off
+  compat41       	off
++ direxpand      	off
+  dirspell       	off
+  dotglob        	off
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 28
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 29
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-030 b/SOURCES/bash42-030
new file mode 100644
index 0000000..261a619
--- /dev/null
+++ b/SOURCES/bash42-030
@@ -0,0 +1,178 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-030
+
+Bug-Reported-by:	Roman Rakus <rrakus@redhat.com>
+Bug-Reference-ID:	<4D7DD91E.7040808@redhat.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00126.html
+
+Bug-Description:
+
+When attempting to glob strings in a multibyte locale, and those strings
+contain invalid multibyte characters that cause mbsnrtowcs to return 0,
+the globbing code loops infinitely.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c	2010-05-30 18:36:27.000000000 -0400
+--- lib/glob/xmbsrtowcs.c	2011-03-22 16:06:47.000000000 -0400
+***************
+*** 36,39 ****
+--- 36,41 ----
+  #if HANDLE_MULTIBYTE
+  
++ #define WSBUF_INC 32
++ 
+  #ifndef FREE
+  #  define FREE(x)	do { if (x) free (x); } while (0)
+***************
+*** 149,153 ****
+    size_t wcnum;		/* Number of wide characters in WSBUF */
+    mbstate_t state;	/* Conversion State */
+!   size_t wcslength;	/* Number of wide characters produced by the conversion. */
+    const char *end_or_backslash;
+    size_t nms;	/* Number of multibyte characters to convert at one time. */
+--- 151,155 ----
+    size_t wcnum;		/* Number of wide characters in WSBUF */
+    mbstate_t state;	/* Conversion State */
+!   size_t n, wcslength;	/* Number of wide characters produced by the conversion. */
+    const char *end_or_backslash;
+    size_t nms;	/* Number of multibyte characters to convert at one time. */
+***************
+*** 172,176 ****
+        tmp_p = p;
+        tmp_state = state;
+!       wcslength = mbsnrtowcs(NULL, &tmp_p, nms, 0, &tmp_state);
+  
+        /* Conversion failed. */
+--- 174,189 ----
+        tmp_p = p;
+        tmp_state = state;
+! 
+!       if (nms == 0 && *p == '\\')	/* special initial case */
+! 	nms = wcslength = 1;
+!       else
+! 	wcslength = mbsnrtowcs (NULL, &tmp_p, nms, 0, &tmp_state);
+! 
+!       if (wcslength == 0)
+! 	{
+! 	  tmp_p = p;		/* will need below */
+! 	  tmp_state = state;
+! 	  wcslength = 1;	/* take a single byte */
+! 	}
+  
+        /* Conversion failed. */
+***************
+*** 187,191 ****
+  	  wchar_t *wstmp;
+  
+! 	  wsbuf_size = wcnum+wcslength+1;	/* 1 for the L'\0' or the potential L'\\' */
+  
+  	  wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
+--- 200,205 ----
+  	  wchar_t *wstmp;
+  
+! 	  while (wsbuf_size < wcnum+wcslength+1) /* 1 for the L'\0' or the potential L'\\' */
+! 	    wsbuf_size += WSBUF_INC;
+  
+  	  wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
+***************
+*** 200,207 ****
+  
+        /* Perform the conversion. This is assumed to return 'wcslength'.
+!        * It may set 'p' to NULL. */
+!       mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
+  
+!       wcnum += wcslength;
+  
+        if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
+--- 214,229 ----
+  
+        /* Perform the conversion. This is assumed to return 'wcslength'.
+! 	 It may set 'p' to NULL. */
+!       n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
+  
+!       /* Compensate for taking single byte on wcs conversion failure above. */
+!       if (wcslength == 1 && (n == 0 || n == (size_t)-1))
+! 	{
+! 	  state = tmp_state;
+! 	  p = tmp_p;
+! 	  wsbuf[wcnum++] = *p++;
+! 	}
+!       else
+!         wcnum += wcslength;
+  
+        if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
+***************
+*** 231,236 ****
+     of DESTP and INDICESP are NULL. */
+  
+- #define WSBUF_INC 32
+- 
+  size_t
+  xdupmbstowcs (destp, indicesp, src)
+--- 253,256 ----
+*** ../bash-4.2-patched/lib/glob/glob.c	2009-11-14 18:39:30.000000000 -0500
+--- lib/glob/glob.c	2012-07-07 12:09:56.000000000 -0400
+***************
+*** 201,206 ****
+    size_t pat_n, dn_n;
+  
+    pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
+!   dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
+  
+    ret = 0;
+--- 201,209 ----
+    size_t pat_n, dn_n;
+  
++   pat_wc = dn_wc = (wchar_t *)NULL;
++ 
+    pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
+!   if (pat_n != (size_t)-1)
+!     dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
+  
+    ret = 0;
+***************
+*** 222,225 ****
+--- 225,230 ----
+  	ret = 1;
+      }
++   else
++     ret = skipname (pat, dname, flags);
+  
+    FREE (pat_wc);
+***************
+*** 267,272 ****
+    n = xdupmbstowcs (&wpathname, NULL, pathname);
+    if (n == (size_t) -1)
+!     /* Something wrong. */
+!     return;
+    orig_wpathname = wpathname;
+  
+--- 272,280 ----
+    n = xdupmbstowcs (&wpathname, NULL, pathname);
+    if (n == (size_t) -1)
+!     {
+!       /* Something wrong.  Fall back to single-byte */
+!       udequote_pathname (pathname);
+!       return;
+!     }
+    orig_wpathname = wpathname;
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 29
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 30
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-031 b/SOURCES/bash42-031
new file mode 100644
index 0000000..419d447
--- /dev/null
+++ b/SOURCES/bash42-031
@@ -0,0 +1,80 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-031
+
+Bug-Reported-by:	Max Horn <max@quendi.de>
+Bug-Reference-ID:	<20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html
+
+Bug-Description:
+
+A change between bash-4.1 and bash-4.2 to prevent the readline input hook
+from being called too frequently had the side effect of causing delays
+when reading pasted input on systems such as Mac OS X.  This patch fixes
+those delays while retaining the bash-4.2 behavior.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/readline/input.c	2010-05-30 18:33:01.000000000 -0400
+--- lib/readline/input.c	2012-06-25 21:08:42.000000000 -0400
+***************
+*** 410,414 ****
+  rl_read_key ()
+  {
+!   int c;
+  
+    rl_key_sequence_length++;
+--- 412,416 ----
+  rl_read_key ()
+  {
+!   int c, r;
+  
+    rl_key_sequence_length++;
+***************
+*** 430,441 ****
+  	  while (rl_event_hook)
+  	    {
+! 	      if (rl_gather_tyi () < 0)	/* XXX - EIO */
+  		{
+  		  rl_done = 1;
+  		  return ('\n');
+  		}
+  	      RL_CHECK_SIGNALS ();
+- 	      if (rl_get_char (&c) != 0)
+- 		break;
+  	      if (rl_done)		/* XXX - experimental */
+  		return ('\n');
+--- 432,447 ----
+  	  while (rl_event_hook)
+  	    {
+! 	      if (rl_get_char (&c) != 0)
+! 		break;
+! 		
+! 	      if ((r = rl_gather_tyi ()) < 0)	/* XXX - EIO */
+  		{
+  		  rl_done = 1;
+  		  return ('\n');
+  		}
++ 	      else if (r == 1)			/* read something */
++ 		continue;
++ 
+  	      RL_CHECK_SIGNALS ();
+  	      if (rl_done)		/* XXX - experimental */
+  		return ('\n');
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 30
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 31
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-032 b/SOURCES/bash42-032
new file mode 100644
index 0000000..d4f25ca
--- /dev/null
+++ b/SOURCES/bash42-032
@@ -0,0 +1,75 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-032
+
+Bug-Reported-by:	Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
+Bug-Reference-ID:	<OFDE975207.0C3622E5-ONC12579F3.00361A06-C12579F3.00365E39@orga-systems.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00010.html
+
+Bug-Description:
+
+Bash-4.2 has problems with DEL characters in the expanded value of variables
+used in the same quoted string as variables that expand to nothing.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-20120427/subst.c	2012-04-22 16:19:10.000000000 -0400
+--- subst.c	2012-05-07 16:06:35.000000000 -0400
+***************
+*** 8152,8155 ****
+--- 8152,8163 ----
+  	  dispose_word_desc (tword);
+  
++ 	  /* Kill quoted nulls; we will add them back at the end of
++ 	     expand_word_internal if nothing else in the string */
++ 	  if (had_quoted_null && temp && QUOTED_NULL (temp))
++ 	    {
++ 	      FREE (temp);
++ 	      temp = (char *)NULL;
++ 	    }
++ 
+  	  goto add_string;
+  	  break;
+***************
+*** 8556,8560 ****
+        if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+  	tword->flags |= W_QUOTED;
+!       if (had_quoted_null)
+  	tword->flags |= W_HASQUOTEDNULL;
+        list = make_word_list (tword, (WORD_LIST *)NULL);
+--- 8564,8568 ----
+        if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+  	tword->flags |= W_QUOTED;
+!       if (had_quoted_null && QUOTED_NULL (istring))
+  	tword->flags |= W_HASQUOTEDNULL;
+        list = make_word_list (tword, (WORD_LIST *)NULL);
+***************
+*** 8587,8591 ****
+  	  if (word->flags & W_NOEXPAND)
+  	    tword->flags |= W_NOEXPAND;
+! 	  if (had_quoted_null)
+  	    tword->flags |= W_HASQUOTEDNULL;	/* XXX */
+  	  list = make_word_list (tword, (WORD_LIST *)NULL);
+--- 8595,8599 ----
+  	  if (word->flags & W_NOEXPAND)
+  	    tword->flags |= W_NOEXPAND;
+! 	  if (had_quoted_null && QUOTED_NULL (istring))
+  	    tword->flags |= W_HASQUOTEDNULL;	/* XXX */
+  	  list = make_word_list (tword, (WORD_LIST *)NULL);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 31
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 32
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-033 b/SOURCES/bash42-033
new file mode 100644
index 0000000..e58d728
--- /dev/null
+++ b/SOURCES/bash42-033
@@ -0,0 +1,57 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-033
+
+Bug-Reported-by:	David Leverton <levertond@googlemail.com>
+Bug-Reference-ID:	<4FCCE737.1060603@googlemail.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+Bash uses a static buffer when expanding the /dev/fd prefix for the test
+and conditional commands, among other uses, when it should use a dynamic
+buffer to avoid buffer overflow.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/sh/eaccess.c	2011-01-08 20:50:10.000000000 -0500
+--- lib/sh/eaccess.c	2012-06-04 21:06:43.000000000 -0400
+***************
+*** 83,86 ****
+--- 83,88 ----
+       struct stat *finfo;
+  {
++   static char *pbuf = 0;
++ 
+    if (*path == '\0')
+      {
+***************
+*** 107,111 ****
+       On most systems, with the notable exception of linux, this is
+       effectively a no-op. */
+!       char pbuf[32];
+        strcpy (pbuf, DEV_FD_PREFIX);
+        strcat (pbuf, path + 8);
+--- 109,113 ----
+       On most systems, with the notable exception of linux, this is
+       effectively a no-op. */
+!       pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
+        strcpy (pbuf, DEV_FD_PREFIX);
+        strcat (pbuf, path + 8);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 32
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 33
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-034 b/SOURCES/bash42-034
new file mode 100644
index 0000000..e4f05e1
--- /dev/null
+++ b/SOURCES/bash42-034
@@ -0,0 +1,46 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-034
+
+Bug-Reported-by:	"Davide Brini" <dave_br@gmx.com>
+Bug-Reference-ID:	<20120604164154.69781EC04B@imaps.oficinas.atrapalo.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00030.html
+
+Bug-Description:
+
+In bash-4.2, the history code would inappropriately add a semicolon to
+multi-line compound array assignments when adding them to the history.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/parse.y	2011-11-21 18:03:36.000000000 -0500
+--- parse.y	2012-06-07 12:48:47.000000000 -0400
+***************
+*** 4900,4905 ****
+--- 4916,4924 ----
+        return (current_command_line_count == 2 ? "\n" : "");
+      }
+  
++   if (parser_state & PST_COMPASSIGN)
++     return (" ");
++ 
+    /* First, handle some special cases. */
+    /*(*/
+    /* If we just read `()', assume it's a function definition, and don't
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 33
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 34
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-035 b/SOURCES/bash42-035
new file mode 100644
index 0000000..6f0be6f
--- /dev/null
+++ b/SOURCES/bash42-035
@@ -0,0 +1,66 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-035
+
+Bug-Reported-by:	Dan Douglas <ormaaj@gmail.com>
+Bug-Reference-ID:	<2766482.Ksm3GrSoYi@smorgbox>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00071.html
+
+Bug-Description:
+
+When given a number of lines to read, `mapfile -n lines' reads one too many.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/mapfile.def	2010-05-29 22:09:47.000000000 -0400
+--- builtins/mapfile.def	2012-06-20 09:48:33.000000000 -0400
+***************
+*** 196,206 ****
+    interrupt_immediately++;
+    for (array_index = origin, line_count = 1; 
+!        zgetline (fd, &line, &line_length, unbuffered_read) != -1;
+!        array_index++, line_count++) 
+      {
+-       /* Have we exceeded # of lines to store? */
+-       if (line_count_goal != 0 && line_count > line_count_goal) 
+- 	break;
+- 
+        /* Remove trailing newlines? */
+        if (flags & MAPF_CHOP)
+--- 196,202 ----
+    interrupt_immediately++;
+    for (array_index = origin, line_count = 1; 
+!  	zgetline (fd, &line, &line_length, unbuffered_read) != -1;
+! 	array_index++) 
+      {
+        /* Remove trailing newlines? */
+        if (flags & MAPF_CHOP)
+***************
+*** 218,221 ****
+--- 214,222 ----
+  
+        bind_array_element (entry, array_index, line, 0);
++ 
++       /* Have we exceeded # of lines to store? */
++       line_count++;
++       if (line_count_goal != 0 && line_count > line_count_goal) 
++ 	break;
+      }
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 34
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 35
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-036 b/SOURCES/bash42-036
new file mode 100644
index 0000000..73fac40
--- /dev/null
+++ b/SOURCES/bash42-036
@@ -0,0 +1,92 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-036
+
+Bug-Reported-by:	gregrwm <backuppc-users@whitleymott.net>
+Bug-Reference-ID:	<CAD+dB9B4JG+qUwZBQUwiQmVt0j6NDn=DDTxr9R+nkA8DL4KLJA@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00108.html
+
+Bug-Description:
+
+Bash-4.2 produces incorrect word splitting results when expanding
+double-quoted $@ in the same string as and adjacent to other variable
+expansions.  The $@ should be split, the other expansions should not.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2012-05-02 12:02:33.000000000 -0400
+--- subst.c	2012-07-08 21:19:32.000000000 -0400
+***************
+*** 7923,7927 ****
+    /* State flags */
+    int had_quoted_null;
+!   int has_dollar_at;
+    int tflag;
+    int pflags;			/* flags passed to param_expand */
+--- 7923,7927 ----
+    /* State flags */
+    int had_quoted_null;
+!   int has_dollar_at, temp_has_dollar_at;
+    int tflag;
+    int pflags;			/* flags passed to param_expand */
+***************
+*** 8128,8138 ****
+  	    *expanded_something = 1;
+  
+! 	  has_dollar_at = 0;
+  	  pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
+  	  if (word->flags & W_NOSPLIT2)
+  	    pflags |= PF_NOSPLIT2;
+  	  tword = param_expand (string, &sindex, quoted, expanded_something,
+! 			       &has_dollar_at, &quoted_dollar_at,
+  			       &had_quoted_null, pflags);
+  
+  	  if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
+--- 8128,8139 ----
+  	    *expanded_something = 1;
+  
+! 	  temp_has_dollar_at = 0;
+  	  pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
+  	  if (word->flags & W_NOSPLIT2)
+  	    pflags |= PF_NOSPLIT2;
+  	  tword = param_expand (string, &sindex, quoted, expanded_something,
+! 			       &temp_has_dollar_at, &quoted_dollar_at,
+  			       &had_quoted_null, pflags);
++ 	  has_dollar_at += temp_has_dollar_at;
+  
+  	  if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
+***************
+*** 8275,8281 ****
+  	      temp = (char *)NULL;
+  
+! 	      has_dollar_at = 0;
+  	      /* Need to get W_HASQUOTEDNULL flag through this function. */
+! 	      list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL);
+  
+  	      if (list == &expand_word_error || list == &expand_word_fatal)
+--- 8276,8283 ----
+  	      temp = (char *)NULL;
+  
+! 	      temp_has_dollar_at = 0;	/* XXX */
+  	      /* Need to get W_HASQUOTEDNULL flag through this function. */
+! 	      list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL);
+! 	      has_dollar_at += temp_has_dollar_at;
+  
+  	      if (list == &expand_word_error || list == &expand_word_fatal)
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 35
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 36
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-037 b/SOURCES/bash42-037
new file mode 100644
index 0000000..a12b8a7
--- /dev/null
+++ b/SOURCES/bash42-037
@@ -0,0 +1,112 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-037
+
+Bug-Reported-by:	Jakub Filak
+Bug-Reference-ID:
+Bug-Reference-URL:	https://bugzilla.redhat.com/show_bug.cgi?id=813289
+
+Bug-Description:
+
+Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
+commands leads to an infinite loop.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/readline/vi_mode.c	2011-02-25 11:17:02.000000000 -0500
+--- lib/readline/vi_mode.c	2012-06-02 12:24:47.000000000 -0400
+***************
+*** 1235,1243 ****
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+!   else if (vi_redoing)
+      {
+        _rl_vimvcxt->motion = _rl_vi_last_motion;
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+  #if defined (READLINE_CALLBACKS)
+    else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1297,1313 ----
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+!   else if (vi_redoing && _rl_vi_last_motion != 'd')	/* `dd' is special */
+      {
+        _rl_vimvcxt->motion = _rl_vi_last_motion;
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
++   else if (vi_redoing)		/* handle redoing `dd' here */
++     {
++       _rl_vimvcxt->motion = _rl_vi_last_motion;
++       rl_mark = rl_end;
++       rl_beg_of_line (1, key);
++       RL_UNSETSTATE (RL_STATE_VIMOTION);
++       r = vidomove_dispatch (_rl_vimvcxt);
++     }
+  #if defined (READLINE_CALLBACKS)
+    else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1317,1325 ****
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+!   else if (vi_redoing)
+      {
+        _rl_vimvcxt->motion = _rl_vi_last_motion;
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+  #if defined (READLINE_CALLBACKS)
+    else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1387,1403 ----
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
+!   else if (vi_redoing && _rl_vi_last_motion != 'c')	/* `cc' is special */
+      {
+        _rl_vimvcxt->motion = _rl_vi_last_motion;
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
++   else if (vi_redoing)		/* handle redoing `cc' here */
++     {
++       _rl_vimvcxt->motion = _rl_vi_last_motion;
++       rl_mark = rl_end;
++       rl_beg_of_line (1, key);
++       RL_UNSETSTATE (RL_STATE_VIMOTION);
++       r = vidomove_dispatch (_rl_vimvcxt);
++     }
+  #if defined (READLINE_CALLBACKS)
+    else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1378,1381 ****
+--- 1456,1472 ----
+        r = rl_domove_motion_callback (_rl_vimvcxt);
+      }
++   else if (vi_redoing && _rl_vi_last_motion != 'y')	/* `yy' is special */
++     {
++       _rl_vimvcxt->motion = _rl_vi_last_motion;
++       r = rl_domove_motion_callback (_rl_vimvcxt);
++     }
++   else if (vi_redoing)			/* handle redoing `yy' here */
++     {
++       _rl_vimvcxt->motion = _rl_vi_last_motion;
++       rl_mark = rl_end;
++       rl_beg_of_line (1, key);
++       RL_UNSETSTATE (RL_STATE_VIMOTION);
++       r = vidomove_dispatch (_rl_vimvcxt);
++     }
+  #if defined (READLINE_CALLBACKS)
+    else if (RL_ISSTATE (RL_STATE_CALLBACK))
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 36
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 37
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-038 b/SOURCES/bash42-038
new file mode 100644
index 0000000..411e4dd
--- /dev/null
+++ b/SOURCES/bash42-038
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-038
+
+Bug-Reported-by:	armandsl@gmail.com
+Bug-Reference-ID:	<20120822112810.8D14920040@windmill.latviatours.lv>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-08/msg00049.html
+
+Bug-Description:
+
+If a backslash-newline (which is removed) with no other input is given as
+input to `read', the shell tries to dereference a null pointer and seg faults.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/read.def	2012-03-11 17:52:44.000000000 -0400
+--- builtins/read.def	2012-08-22 11:53:09.000000000 -0400
+***************
+*** 792,796 ****
+  #endif
+  
+!   if (saw_escape)
+      {
+        t = dequote_string (input_string);
+--- 847,851 ----
+  #endif
+  
+!   if (saw_escape && input_string && *input_string)
+      {
+        t = dequote_string (input_string);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 37
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 38
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-039 b/SOURCES/bash42-039
new file mode 100644
index 0000000..21457af
--- /dev/null
+++ b/SOURCES/bash42-039
@@ -0,0 +1,58 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-039
+
+Bug-Reported-by:	Dan Douglas <ormaaj@gmail.com>
+Bug-Reference-ID:	<1498458.MpVlmOXDB7@smorgbox>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-09/msg00008.html
+
+Bug-Description:
+
+Under certain circumstances, bash attempts to expand variables in arithmetic
+expressions even when evaluation is being suppressed.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/expr.c	2011-11-21 18:03:35.000000000 -0500
+--- expr.c	2012-09-09 16:31:18.000000000 -0400
+***************
+*** 1010,1013 ****
+--- 1073,1082 ----
+  #endif
+  
++ /*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/
++   /* If we are suppressing evaluation, just short-circuit here instead of
++      going through the rest of the evaluator. */
++   if (noeval)
++     return (0);
++ 
+    /* [[[[[ */
+  #if defined (ARRAY_VARS)
+***************
+*** 1183,1186 ****
+--- 1256,1263 ----
+  
+        *cp = '\0';
++       /* XXX - watch out for pointer aliasing issues here */
++       if (curlval.tokstr && curlval.tokstr == tokstr)
++ 	init_lvalue (&curlval);
++ 
+        FREE (tokstr);
+        tokstr = savestring (tp);
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 38
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 39
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-040 b/SOURCES/bash42-040
new file mode 100644
index 0000000..1de0fe3
--- /dev/null
+++ b/SOURCES/bash42-040
@@ -0,0 +1,56 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-040
+
+Bug-Reported-by:	Andrey Zaitsev <jstcdr@gmail.com>
+Bug-Reference-ID:	<CAEZVQT5PJ1Mb_Zh8LT5qz8sv+-9Q6hGfQ5DU9ZxdJ+gV7xBUaQ@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00144.html
+
+Bug-Description:
+
+Output redirection applied to builtin commands missed I/O errors if
+they happened when the file descriptor was closed, rather than on write
+(e.g., like with an out-of-space error on a remote NFS file system).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/redir.c	2011-01-02 16:00:31.000000000 -0500
+--- redir.c	2012-04-24 20:42:12.000000000 -0400
+***************
+*** 1092,1099 ****
+  #if defined (BUFFERED_INPUT)
+  	  check_bash_input (redirector);
+! 	  close_buffered_fd (redirector);
+  #else /* !BUFFERED_INPUT */
+! 	  close (redirector);
+  #endif /* !BUFFERED_INPUT */
+  	}
+        break;
+--- 1092,1101 ----
+  #if defined (BUFFERED_INPUT)
+  	  check_bash_input (redirector);
+! 	  r = close_buffered_fd (redirector);
+  #else /* !BUFFERED_INPUT */
+! 	  r = close (redirector);
+  #endif /* !BUFFERED_INPUT */
++ 	  if (r < 0 && (flags & RX_INTERNAL) && (errno == EIO || errno == ENOSPC))
++ 	    REDIRECTION_ERROR (r, errno, -1);
+  	}
+        break;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 39
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 40
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-041 b/SOURCES/bash42-041
new file mode 100644
index 0000000..37d4ac7
--- /dev/null
+++ b/SOURCES/bash42-041
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-041
+
+Bug-Reported-by:	Andrey Borzenkov <arvidjaar@gmail.com>
+Bug-Reference-ID:	<20121202205200.2134478e@opensuse.site>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-12/msg00008.html
+
+Bug-Description:
+
+Process substitution incorrectly inherited a flag that inhibited using the
+(local) temporary environment for variable lookups if it was providing
+the filename to a redirection.  The intent the flag is to enforce the
+Posix command expansion ordering rules.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2012-07-14 15:53:20.000000000 -0400
+--- subst.c	2012-12-02 22:26:54.000000000 -0500
+***************
+*** 5125,5128 ****
+--- 5129,5136 ----
+  #endif /* HAVE_DEV_FD */
+  
++   /* subshells shouldn't have this flag, which controls using the temporary
++      environment for variable lookups. */
++   expanding_redir = 0;
++ 
+    result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
+  
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 40
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 41
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-042 b/SOURCES/bash42-042
new file mode 100644
index 0000000..1ce0cae
--- /dev/null
+++ b/SOURCES/bash42-042
@@ -0,0 +1,57 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-042
+
+Bug-Reported-by:	Adam Pippin <adam@gp-inc.ca>
+Bug-Reference-ID:	<CAPYbNHr6ucZFOoWsRdUJj6KP3Ju0j1bkESa_cmb7iU+kZwdVpg@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-11/msg00087.html
+
+Bug-Description:
+
+Compilation failed after specifying the  `--enable-minimal-config' option to
+configure (more specifically, specifying `--disable-alias').
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/parse.y	2012-07-08 21:53:33.000000000 -0400
+--- parse.y	2012-10-14 20:20:34.000000000 -0400
+***************
+*** 2394,2397 ****
+--- 2392,2396 ----
+  	   to consume the quoted newline and move to the next character in
+  	   the expansion. */
++ #if defined (ALIAS)
+  	if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0')
+  	  {
+***************
+*** 2404,2408 ****
+  	    goto next_alias_char;	/* and get next character */
+  	  }
+! 	else	    
+  	  goto restart_read;
+      }
+--- 2403,2408 ----
+  	    goto next_alias_char;	/* and get next character */
+  	  }
+! 	else
+! #endif 
+  	  goto restart_read;
+      }
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 41
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 42
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-043 b/SOURCES/bash42-043
new file mode 100644
index 0000000..b25a5ee
--- /dev/null
+++ b/SOURCES/bash42-043
@@ -0,0 +1,65 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-043
+
+Bug-Reported-by:	konsolebox <konsolebox@gmail.com>
+Bug-Reference-ID:	<CAJnmqwZuGKLgMsMwxRK4LL+2NN+HgvmKzrnode99QBGrcgX1Lw@mail.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-01/msg00138.html
+
+Bug-Description:
+
+When SIGCHLD is trapped, and a SIGCHLD trap handler runs when a pending
+`read -t' invocation times out and generates SIGALRM, bash can crash with
+a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/builtins/read.def	2012-10-31 21:22:51.000517000 -0400
+--- builtins/read.def	2013-01-25 10:28:16.000038000 -0500
+***************
+*** 386,393 ****
+  	  /* Tricky.  The top of the unwind-protect stack is the free of
+  	     input_string.  We want to run all the rest and use input_string,
+! 	     so we have to remove it from the stack. */
+! 	  remove_unwind_protect ();
+! 	  run_unwind_frame ("read_builtin");
+  	  input_string[i] = '\0';	/* make sure it's terminated */
+  	  retval = 128+SIGALRM;
+  	  goto assign_vars;
+--- 386,403 ----
+  	  /* Tricky.  The top of the unwind-protect stack is the free of
+  	     input_string.  We want to run all the rest and use input_string,
+! 	     so we have to save input_string temporarily, run the unwind-
+! 	     protects, then restore input_string so we can use it later. */
+! 
+  	  input_string[i] = '\0';	/* make sure it's terminated */
++ 	  if (i == 0)
++ 	    {
++ 	      t = (char *)xmalloc (1);
++ 	      t[0] = 0;
++ 	    }
++ 	  else
++ 	    t = savestring (input_string);
++ 
++ 	  run_unwind_frame ("read_builtin");
++ 	  input_string = t;
+  	  retval = 128+SIGALRM;
+  	  goto assign_vars;
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 42
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 43
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-044 b/SOURCES/bash42-044
new file mode 100644
index 0000000..e5bf283
--- /dev/null
+++ b/SOURCES/bash42-044
@@ -0,0 +1,70 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-044
+
+Bug-Reported-by:	"Dashing" <dashing@hushmail.com>
+Bug-Reference-ID:	<20130211175049.D90786F446@smtp.hushmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00030.html
+
+Bug-Description:
+
+When converting a multibyte string to a wide character string as part of
+pattern matching, bash does not handle the end of the string correctly,
+causing the search for the NUL to go beyond the end of the string and
+reference random memory.  Depending on the contents of that memory, bash
+can produce errors or crash. 
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c	2012-07-08 21:53:19.000000000 -0400
+--- lib/glob/xmbsrtowcs.c	2013-02-12 12:00:39.000000000 -0500
+***************
+*** 217,220 ****
+--- 217,226 ----
+        n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
+  
++       if (n == 0 && p == 0)
++ 	{
++ 	  wsbuf[wcnum] = L'\0';
++ 	  break;
++ 	}
++ 
+        /* Compensate for taking single byte on wcs conversion failure above. */
+        if (wcslength == 1 && (n == 0 || n == (size_t)-1))
+***************
+*** 222,226 ****
+  	  state = tmp_state;
+  	  p = tmp_p;
+! 	  wsbuf[wcnum++] = *p++;
+  	}
+        else
+--- 228,238 ----
+  	  state = tmp_state;
+  	  p = tmp_p;
+! 	  wsbuf[wcnum] = *p;
+! 	  if (*p == 0)
+! 	    break;
+! 	  else
+! 	    {
+! 	      wcnum++; p++;
+! 	    }
+  	}
+        else
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 43
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 44
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-045 b/SOURCES/bash42-045
new file mode 100644
index 0000000..e0f8559
--- /dev/null
+++ b/SOURCES/bash42-045
@@ -0,0 +1,53 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-045
+
+Bug-Reported-by:	Stephane Chazelas <stephane.chazelas@gmail.com>
+Bug-Reference-ID:	<20130218195539.GA9620@chaz.gmail.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00080.html
+
+Bug-Description:
+
+The <&n- and >&n- redirections, which move one file descriptor to another,
+leave the file descriptor closed when applied to builtins or compound
+commands.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/redir.c	2013-01-30 11:56:09.000000000 -0500
+--- redir.c	2013-02-19 09:38:36.000000000 -0500
+***************
+*** 1008,1011 ****
+--- 1008,1021 ----
+  	      REDIRECTION_ERROR (r, errno, -1);
+  	    }
++ 	  if ((flags & RX_UNDOABLE) && (ri == r_move_input || ri == r_move_output))
++ 	    {
++ 	      /* r_move_input and r_move_output add an additional close()
++ 		 that needs to be undone */
++ 	      if (fcntl (redirector, F_GETFD, 0) != -1)
++ 		{
++ 		  r = add_undo_redirect (redir_fd, r_close_this, -1);
++ 		  REDIRECTION_ERROR (r, errno, -1);
++ 		}
++ 	    }
+  #if defined (BUFFERED_INPUT)
+  	  check_bash_input (redirector);
+
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 44
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 45
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-046 b/SOURCES/bash42-046
new file mode 100644
index 0000000..03a489e
--- /dev/null
+++ b/SOURCES/bash42-046
@@ -0,0 +1,55 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-046
+
+Bug-Reported-by:	"Theodoros V. Kalamatianos" <thkala@gmail.com>
+Bug-Reference-ID:	<20140112011131.GE17667@infinity.metashade.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-01/msg00044.html
+
+Bug-Description:
+
+Bash-4.2 patch 32 introduced a problem with "$@" and arrays expanding empty
+positional parameters or array elements when using substring expansion,
+pattern substitution, or case modfication.  The empty parameters or array
+elements are removed instead of expanding to empty strings ("").
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/subst.c	2012-12-31 11:52:56.000000000 -0500
+--- subst.c	2014-03-31 14:19:56.000000000 -0400
+***************
+*** 7243,7247 ****
+        ret = alloc_word_desc ();
+        ret->word = temp1;
+!       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+        return ret;
+--- 7243,7253 ----
+        ret = alloc_word_desc ();
+        ret->word = temp1;
+!       /* We test quoted_dollar_atp because we want variants with double-quoted
+! 	 "$@" to take a different code path. In fact, we make sure at the end
+! 	 of expand_word_internal that we're only looking at these flags if
+! 	 quoted_dollar_at == 0. */
+!       if (temp1 && 
+!           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
+! 	  QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+        return ret;
+*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
+--- patchlevel.h	Thu Feb 24 21:41:34 2011
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 45
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 46
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/SOURCES/bash42-052 b/SOURCES/bash42-052
new file mode 100644
index 0000000..686dbd4
--- /dev/null
+++ b/SOURCES/bash42-052
@@ -0,0 +1,44 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-052
+
+Bug-Reported-by:	Michal Zalewski <lcamtuf@coredump.cx>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+When bash is parsing a function definition that contains a here-document
+delimited by end-of-file (or end-of-string), it leaves the closing delimiter
+uninitialized.  This can result in an invalid memory access when the parsed
+function is later copied.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2.51/make_cmd.c	2009-09-11 17:26:12.000000000 -0400
+--- make_cmd.c	2014-10-02 11:26:58.000000000 -0400
+***************
+*** 690,693 ****
+--- 690,694 ----
+    temp->redirector = source;
+    temp->redirectee = dest_and_filename;
++   temp->here_doc_eof = 0;
+    temp->instruction = instruction;
+    temp->flags = 0;
+*** ../bash-4.2.51/copy_cmd.c	2009-09-11 16:28:02.000000000 -0400
+--- copy_cmd.c	2014-10-02 11:26:58.000000000 -0400
+***************
+*** 127,131 ****
+      case r_reading_until:
+      case r_deblank_reading_until:
+!       new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
+        /*FALLTHROUGH*/
+      case r_reading_string:
+--- 127,131 ----
+      case r_reading_until:
+      case r_deblank_reading_until:
+!       new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
+        /*FALLTHROUGH*/
+      case r_reading_string:
diff --git a/SOURCES/bash42-053 b/SOURCES/bash42-053
new file mode 100644
index 0000000..d0485f3
--- /dev/null
+++ b/SOURCES/bash42-053
@@ -0,0 +1,117 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.2
+Patch-ID:	bash42-053
+
+Bug-Reported-by:	Michal Zalewski <lcamtuf@coredump.cx>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+A combination of nested command substitutions and function importing from
+the environment can cause bash to execute code appearing in the environment
+variable value following the function definition.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2.52/builtins/evalstring.c	2014-09-16 19:35:45.000000000 -0400
+--- builtins/evalstring.c	2014-10-04 15:00:26.000000000 -0400
+***************
+*** 262,271 ****
+  	      struct fd_bitmap *bitmap;
+  
+! 	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
+  		{
+! 		  internal_warning ("%s: ignoring function definition attempt", from_file);
+! 		  should_jump_to_top_level = 0;
+! 		  last_result = last_command_exit_value = EX_BADUSAGE;
+! 		  break;
+  		}
+  
+--- 262,284 ----
+  	      struct fd_bitmap *bitmap;
+  
+! 	      if (flags & SEVAL_FUNCDEF)
+  		{
+! 		  char *x;
+! 
+! 		  /* If the command parses to something other than a straight
+! 		     function definition, or if we have not consumed the entire
+! 		     string, or if the parser has transformed the function
+! 		     name (as parsing will if it begins or ends with shell
+! 		     whitespace, for example), reject the attempt */
+! 		  if (command->type != cm_function_def ||
+! 		      ((x = parser_remaining_input ()) && *x) ||
+! 		      (STREQ (from_file, command->value.Function_def->name->word) == 0))
+! 		    {
+! 		      internal_warning (_("%s: ignoring function definition attempt"), from_file);
+! 		      should_jump_to_top_level = 0;
+! 		      last_result = last_command_exit_value = EX_BADUSAGE;
+! 		      reset_parser ();
+! 		      break;
+! 		    }
+  		}
+  
+***************
+*** 332,336 ****
+  
+  	      if (flags & SEVAL_ONECMD)
+! 		break;
+  	    }
+  	}
+--- 345,352 ----
+  
+  	      if (flags & SEVAL_ONECMD)
+! 		{
+! 		  reset_parser ();
+! 		  break;
+! 		}
+  	    }
+  	}
+*** ../bash-4.2.52/parse.y	2014-09-30 19:24:19.000000000 -0400
+--- parse.y	2014-10-04 15:00:26.000000000 -0400
+***************
+*** 2436,2439 ****
+--- 2436,2449 ----
+  }
+  
++ char *
++ parser_remaining_input ()
++ {
++   if (shell_input_line == 0)
++     return 0;
++   if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
++     return '\0';	/* XXX */
++   return (shell_input_line + shell_input_line_index);
++ }
++ 
+  #ifdef INCLUDE_UNUSED
+  /* Back the input pointer up by one, effectively `ungetting' a character. */
+***************
+*** 3891,3896 ****
+    /* reset_parser clears shell_input_line and associated variables */
+    restore_input_line_state (&ls);
+!   if (interactive)
+!     token_to_read = 0;
+  
+    /* Need to find how many characters parse_and_execute consumed, update
+--- 3901,3906 ----
+    /* reset_parser clears shell_input_line and associated variables */
+    restore_input_line_state (&ls);
+! 
+!   token_to_read = 0;
+  
+    /* Need to find how many characters parse_and_execute consumed, update
+*** ../bash-4.2.52/shell.h	2011-11-21 18:03:32.000000000 -0500
+--- shell.h	2014-10-04 15:00:26.000000000 -0400
+***************
+*** 178,181 ****
+--- 178,183 ----
+  
+  /* Let's try declaring these here. */
++ extern char *parser_remaining_input __P((void));
++ 
+  extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
+  extern void restore_parser_state __P((sh_parser_state_t *));
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..031ab84
--- /dev/null
+++ b/SOURCES/dot-bash_profile
@@ -0,0 +1,12 @@
+# .bash_profile
+
+# Get the aliases and functions
+if [ -f ~/.bashrc ]; then
+	. ~/.bashrc
+fi
+
+# User specific environment and startup programs
+
+PATH=$PATH:$HOME/.local/bin:$HOME/bin
+
+export PATH
diff --git a/SOURCES/dot-bashrc b/SOURCES/dot-bashrc
new file mode 100644
index 0000000..1130779
--- /dev/null
+++ b/SOURCES/dot-bashrc
@@ -0,0 +1,11 @@
+# .bashrc
+
+# Source global definitions
+if [ -f /etc/bashrc ]; then
+	. /etc/bashrc
+fi
+
+# 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/SOURCES/fix-shopt-lastpipe-mode-crash.patch b/SOURCES/fix-shopt-lastpipe-mode-crash.patch
new file mode 100644
index 0000000..620cb20
--- /dev/null
+++ b/SOURCES/fix-shopt-lastpipe-mode-crash.patch
@@ -0,0 +1,48 @@
+From 0eb5e47f531b49c8d048c9ae9657eeb63f49a9f3 Mon Sep 17 00:00:00 2001
+From: Siteshwar Vashisht <svashisht@redhat.com>
+Date: Fri, 13 May 2016 01:34:06 +0530
+Subject: [PATCH] Fix shopt lastpipe mode crash
+
+---
+ execute_cmd.c | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/execute_cmd.c b/execute_cmd.c
+index c5cf6d2..7b22460 100644
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -2254,11 +2254,28 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
+   if (lastpipe_flag)
+     {
+ #if defined (JOB_CONTROL)
+-      append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
+-#endif
++      if (INVALID_JOB (lastpipe_jid) == 0)
++        {
++          append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
++          lstdin = wait_for (lastpid);
++        }
++      else
++        lstdin = wait_for_single_pid (lastpid);		/* checks bgpids list */
++#else
+       lstdin = wait_for (lastpid);
++#endif
++
+ #if defined (JOB_CONTROL)
+-      exec_result = job_exit_status (lastpipe_jid);
++      /* If wait_for removes the job from the jobs table, use result of last
++	 command as pipeline's exit status as usual.  The jobs list can get
++	 frozen and unfrozen at inconvenient times if there are multiple pipelines
++	 running simultaneously. */
++      if (INVALID_JOB (lastpipe_jid) == 0)
++	exec_result = job_exit_status (lastpipe_jid);
++      else if (pipefail_opt)
++	exec_result = exec_result | lstdin;	/* XXX */
++      /* otherwise we use exec_result */
++        
+ #endif
+       unfreeze_jobs_list ();
+     }
+-- 
+2.5.5
+
diff --git a/SPECS/bash.spec b/SPECS/bash.spec
new file mode 100644
index 0000000..4b2ec49
--- /dev/null
+++ b/SPECS/bash.spec
@@ -0,0 +1,1772 @@
+#% define beta_tag rc2
+%define patchleveltag .46
+%define baseversion 4.2
+%bcond_without tests
+
+Version: %{baseversion}%{patchleveltag}
+Name: bash
+Summary: The GNU Bourne Again shell
+Release: 30%{?dist}
+Group: System Environment/Shells
+License: GPLv3+
+Url: http://www.gnu.org/software/bash
+Source0: ftp://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
+Patch001: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-001
+Patch002: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-002
+Patch003: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-003
+Patch004: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-004
+Patch005: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-005
+Patch006: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-006
+Patch007: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-007
+Patch008: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-008
+Patch009: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-009
+Patch010: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-010
+Patch011: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-011
+Patch012: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-012
+Patch013: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-013
+Patch014: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-014
+Patch015: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-015
+Patch016: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-016
+Patch017: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-017
+Patch018: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-018
+Patch019: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-019
+Patch020: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-020
+Patch021: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-021
+Patch022: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-022
+Patch023: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-023
+Patch024: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-024
+Patch025: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-025
+Patch026: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-026
+Patch027: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-027
+Patch028: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-028
+Patch029: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-029
+Patch030: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-030
+Patch031: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-031
+Patch032: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-032
+Patch033: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-033
+Patch034: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-034
+Patch035: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-035
+Patch036: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-036
+Patch037: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-037
+Patch038: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-038
+Patch039: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-039
+Patch040: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-040
+Patch041: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-041
+Patch042: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-042
+Patch043: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-043
+Patch044: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-044
+Patch045: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-045
+Patch046: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-046
+#1175647 - shellshock related parser bugs
+Patch052: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-052
+Patch053: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-053
+
+# 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-readline-oom.patch
+Patch109: bash-2.05b-xcc.patch
+Patch110: bash-3.2-audit.patch
+Patch111: bash-3.2-ssh_source_bash.patch
+Patch112: bash-bashbug.patch
+Patch113: bash-infotags.patch
+Patch114: bash-requires.patch
+Patch115: bash-setlocale.patch
+Patch116: bash-tty-tests.patch
+
+# 484809, check if interp section is NOBITS
+Patch117: bash-4.0-nobits.patch
+
+# Do the same CFLAGS in generated Makefile in examples
+Patch118: bash-4.1-examples.patch
+
+# Builtins like echo and printf won't report errors
+# when output does not succeed due to EPIPE
+Patch119: bash-4.1-broken_pipe.patch
+
+# Enable system-wide .bash_logout for login shells
+Patch120: bash-4.2-rc2-logout.patch
+
+# Static analyzis shows some issues in bash-2.05a-interpreter.patch
+Patch121: bash-4.2-coverity.patch
+
+# Don't call malloc in signal handler
+Patch122: bash-4.1-defer-sigchld-trap.patch
+
+# 799958, updated info about trap
+Patch123: bash-4.2-manpage_trap.patch
+
+# 695656, block the signal and unblock it after the new handler is installed
+Patch124: bash-4.2-signal.patch
+
+# https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
+Patch125: bash-4.2-size_type.patch
+
+# 903833, Fix missing close(), fixes fd leaks
+Patch126: bash-4.2-missing_closes.patch
+Patch127: bash-4.1-trap.patch
+
+# 1112709 - mention ulimit -c and -f POSIX block size
+Patch128: bash-4.2-man-ulimit.patch
+
+# 1116301 - inhibit brace expansion in some cases
+Patch129: bash-4.2-brace-expand.patch
+
+# 1102813 - fix bash visual mode
+Patch130: bash-4.2-noecho.patch
+
+# 1126370 - provide a better description for some bash builtins
+Patch131: bash-4.2-manpage.patch
+
+# 1126396 - prevent bash from hanging with certain history settings
+Patch132: bash-4.2-history-hang.patch
+
+# 1126401 - properly document extglob behaviour
+Patch133: bash-4.2-extglob-man.patch
+
+# 1141648 - properly document extglob behaviour
+Patch134: bash-4.2-env-inject.patch
+
+# 1146324 - cve-2014-7169
+
+Patch135: bash-4.2-cve-2014-7169-0.patch
+Patch136: bash-4.2-cve-2014-7169-1.patch
+Patch137: bash-4.2-cve-2014-7169-2.patch
+
+#1172214 - Bash leaks memory when doing a pattern-substitution
+Patch138: bash-4.2-double-alloc.patch
+
+#1196566 - IFS incorrectly splitting herestrings
+Patch139: bash-4.2-ifs-in-temp-env.patch
+
+#1165793
+Patch140: bash-4.2-check-debugger.patch
+
+#1212775
+Patch141: bash-4.2-case-in-command-subst.patch
+
+#1237213 - export when fnname contains hyphens
+Patch142: bash-4.2-enable-hyphened-fn-export.patch
+
+#1326302
+Patch143: fix-shopt-lastpipe-mode-crash.patch
+
+#1372806
+Patch144: bash-4.3-trapped-signals.patch
+
+#1403255
+Patch145: bash-4.4-param-expansion.patch
+
+#1377496
+Patch146: bash-4.4-pipeline-pgrp.patch
+
+#1267478
+Patch147: bash-4.2-missing-opt-cd.patch
+
+#1264101 - Plug a leak related to compound assignments
+Patch148: bash-4.2-leak-compound.patch
+
+#1379237
+Patch149: bash-4.3-cve-2016-0634.patch
+
+#1426026
+Patch150: bash-4.3-cve-2016-7543.patch
+
+#1429838
+Patch151: bash-cve-2016-9401.patch
+
+#1473245
+Patch152: bash-4.3-pipefd-leak.patch
+
+#1487615 - bash fails to execute commands containing multibyte characters
+Patch153: bash-4.3-wshouldquote.patch
+
+BuildRequires: texinfo bison
+BuildRequires: ncurses-devel
+BuildRequires: autoconf, gettext
+Conflicts: 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 doc
+Summary: Documentation files for %{name}
+Group: Development/Languages
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains documentation files for %{name}.
+
+%define pkgdocdir %{_datadir}/doc/%{name}-%{version}
+
+%prep
+#%setup -q -a 2
+%setup -q -n %{name}-%{baseversion}
+
+# Official upstream patches
+%patch001 -p0 -b .001
+%patch002 -p0 -b .002
+%patch003 -p0 -b .003
+%patch004 -p0 -b .004
+%patch005 -p0 -b .005
+%patch006 -p0 -b .006
+%patch007 -p0 -b .007
+%patch008 -p0 -b .008
+%patch009 -p0 -b .009
+%patch010 -p0 -b .010
+%patch011 -p0 -b .011
+%patch012 -p0 -b .012
+%patch013 -p0 -b .013
+%patch014 -p0 -b .014
+%patch015 -p0 -b .015
+%patch016 -p0 -b .016
+%patch017 -p0 -b .017
+%patch018 -p0 -b .018
+%patch019 -p0 -b .019
+%patch020 -p0 -b .020
+%patch021 -p0 -b .021
+%patch022 -p0 -b .022
+%patch023 -p0 -b .023
+%patch024 -p0 -b .024
+%patch025 -p0 -b .025
+%patch026 -p0 -b .026
+%patch027 -p0 -b .027
+%patch028 -p0 -b .028
+%patch029 -p0 -b .029
+%patch030 -p0 -b .030
+%patch031 -p0 -b .031
+%patch032 -p0 -b .032
+%patch033 -p0 -b .033
+%patch034 -p0 -b .034
+%patch035 -p0 -b .035
+%patch036 -p0 -b .036
+%patch037 -p0 -b .037
+%patch038 -p0 -b .038
+%patch039 -p0 -b .039
+%patch040 -p0 -b .040
+%patch041 -p0 -b .041
+%patch042 -p0 -b .042
+%patch043 -p0 -b .043
+%patch044 -p0 -b .044
+%patch045 -p0 -b .045
+%patch046 -p0 -b .046
+
+# Other patches
+%patch101 -p1 -b .security
+%patch102 -p1 -b .paths
+%patch103 -p1 -b .profile
+%patch104 -p1 -b .interpreter
+%patch105 -p1 -b .debuginfo
+%patch106 -p1 -b .manso
+%patch107 -p1 -b .pgrp_sync
+%patch108 -p1 -b .readline_oom
+%patch109 -p1 -b .xcc
+%patch110 -p1 -b .audit
+%patch111 -p1 -b .ssh_source_bash
+%patch112 -p1 -b .bashbug
+%patch113 -p1 -b .infotags
+%patch114 -p1 -b .requires
+%patch115 -p1 -b .setlocale
+%patch116 -p1 -b .tty_tests
+%patch117 -p1 -b .nobits
+%patch118 -p1 -b .examples
+%patch119 -p1 -b .broken_pipe
+%patch120 -p1 -b .logout
+%patch121 -p1 -b .coverity
+%patch122 -p1 -b .defer_sigchld_trap
+%patch123 -p1
+%patch124 -p1 -b .signal
+%patch125 -p1 -b .size_type
+%patch126 -p1 -b .missing_closes
+%patch127 -p1 -b .trap
+%patch128 -p1 -b .ulimit
+%patch129 -p1 -b .expand
+%patch130 -p1 -b .noecho
+%patch131 -p1 -b .manpage
+%patch132 -p1 -b .hang
+%patch133 -p1 -b .man
+%patch134 -p0 -b .inject
+%patch135 -p0 -b .7169-0
+%patch136 -p0 -b .7169-1
+%patch137 -p0 -b .7169-2
+%patch052 -p0 -b .052
+%patch053 -p0 -b .053
+%patch138 -p1 -b .double-alloc
+%patch139 -p1 -b .temp-env
+%patch140 -p1 -b .check-debugger
+%patch141 -p1 -b .command-subst
+%patch142 -p0 -b .export
+%patch143 -p1 -b .fix-shopt-lastpipe-mode
+%patch144 -p1 -b .trapped-signals
+%patch145 -p1 -b .param-expansion
+%patch146 -p1 -b .pipeline-pgrp
+%patch147 -p1 -b .cd-e
+%patch148 -p1 -b .leak-compound
+%patch149 -p1 -b .cve-2016-0634
+%patch150 -p1 -b .cve-2016-7543
+%patch151 -p1 -b .cve-2016-9401
+%patch152 -p1 -b .pipefd-leak
+%patch153 -p1 -b .wshouldquote
+
+echo %{version} > _distribution
+echo %{release} > _patchlevel
+
+%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`"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+if [ -e autoconf ]; then
+  # Yuck. We're using autoconf 2.1x.
+  export PATH=.:$PATH
+fi
+
+# Fix bug #83776
+perl -pi -e 's,bashref\.info,bash.info,' doc/bashref.info
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+mkdir -p $RPM_BUILD_ROOT/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
+  perl -pi -e "s,$i,,g" man.pages
+  perl -pi -e "s,  , ,g" man.pages
+done
+
+install -c -m 644 builtins.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/builtins.1
+
+for i in `cat man.pages` ; do
+  echo .so man1/builtins.1 > ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
+  chmod 0644 ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
+done
+popd
+
+# Link bash man page to sh so that man sh works.
+ln -s bash.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/sh.1
+
+# Not for printf, true and false (conflict with coreutils)
+rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/printf.1
+rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/true.1
+rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/false.1
+
+ln -sf bash $RPM_BUILD_ROOT%{_bindir}/sh
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+mkdir -p $RPM_BUILD_ROOT/etc/skel
+install -c -m644 %SOURCE1 $RPM_BUILD_ROOT/etc/skel/.bashrc
+install -c -m644 %SOURCE2 $RPM_BUILD_ROOT/etc/skel/.bash_profile
+install -c -m644 %SOURCE3 $RPM_BUILD_ROOT/etc/skel/.bash_logout
+LONG_BIT=$(getconf LONG_BIT)
+mv $RPM_BUILD_ROOT%{_bindir}/bashbug \
+   $RPM_BUILD_ROOT%{_bindir}/bashbug-"${LONG_BIT}"
+ln -s bashbug-"${LONG_BIT}" $RPM_BUILD_ROOT%{_bindir}/bashbug
+ln -s bashbug.1 $RPM_BUILD_ROOT/%{_mandir}/man1/bashbug-"$LONG_BIT".1
+
+# Fix missing sh-bangs in example scripts (bug #225609).
+for script in \
+  examples/scripts/krand.bash \
+  examples/scripts/bcsh.sh \
+  examples/scripts/precedence \
+  examples/scripts/shprompt
+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 jobs read umask unalias wait
+do
+  cat <<EOF > "$RPM_BUILD_ROOT"/%{_bindir}/"$ea"
+#!/bin/sh
+builtin $ea "\$@"
+EOF
+chmod +x "$RPM_BUILD_ROOT"/%{_bindir}/"$ea"
+done
+
+%find_lang %{name}
+
+# copy doc to /usr/share/doc
+cat /dev/null > %{name}-doc.files
+mkdir -p $RPM_BUILD_ROOT/%{pkgdocdir}/doc
+cp -p COPYING $RPM_BUILD_ROOT/%{pkgdocdir}
+# loadables aren't buildable
+rm -rf examples/loadables
+for file in CHANGES COMPAT NEWS NOTES POSIX examples\
+    doc/{FAQ,INTRO,rose94.pdf,article.{pdf,txt},bashref.{html,pdf}}
+do
+  cp -rp "$file" $RPM_BUILD_ROOT/%{pkgdocdir}/"$file"
+  echo "%%doc %{pkgdocdir}/$file" >> %{name}-doc.files
+done
+echo "%%doc %{pkgdocdir}/doc" >> %{name}-doc.files
+
+
+%if %{with tests}
+%check
+make check
+%endif
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+# ***** bash doesn't use install-info. It's always listed in %{_infodir}/dir
+# to prevent prereq loops
+
+# 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
+%defattr(-,root,root)
+%config(noreplace) /etc/skel/.b*
+%{_bindir}/sh
+%{_bindir}/bash
+%{_bindir}/alias
+%{_bindir}/bg
+%{_bindir}/cd
+%{_bindir}/command
+%{_bindir}/fc
+%{_bindir}/fg
+%{_bindir}/getopts
+%{_bindir}/jobs
+%{_bindir}/read
+%{_bindir}/umask
+%{_bindir}/unalias
+%{_bindir}/wait
+%dir %{pkgdocdir}/
+%doc %{pkgdocdir}/COPYING
+%attr(0755,root,root) %{_bindir}/bashbug*
+%{_infodir}/bash.info*
+%{_mandir}/*/*
+%{_mandir}/*/..1*
+
+%files doc -f %{name}-doc.files
+%defattr(-, root, root)
+
+# For now there isn't any doc
+#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
+
+%changelog
+* Mon Sep 25 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-30
+- Check for multibyte characters in commands
+  Resolves: #1487615
+
+* Thu Aug 03 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-29
+- Fix a pipe fd leak in process substitution
+  Resolves: #1473245
+
+* Tue Mar 07 2017 Kamil Dudka <kdudka@redhat.com - 4.2.46-28
+- CVE-2016-9401 - Fix crash when '-' is passed as second sign to popd
+  Resolves: #1429838
+
+* Fri Feb 24 2017 Kamil Dudka <kdudka@redhat.com - 4.2.46-27
+- CVE-2016-7543: Fix for arbitrary code execution via SHELLOPTS+PS4 variables
+  Resolves: #1426026
+
+* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-26
+- CVE-2016-0634: Fix for arbitrary code execution via malicious hostname
+  Resolves: #1379237
+
+* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-25
+- Plug a leak related to compound assignments
+  Resolves: #1264101
+
+* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-24
+- Recognize cd -e
+  Resolves: #1267478 
+
+* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-23
+- Add a condition before setting pipeline_pgrp to shell_pgrp
+  Resolves: #1377496
+
+* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-22
+- Avoid crash in parameter expansion while expanding long strings
+  Resolves: #1403255
+
+* Wed Oct 12 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-21
+- Fix a crash in trap signal handling
+  Resolves: #1372806
+
+* Tue Jul 12 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-20
+- Fix a crash when lastpipe mode is enabled
+  Resolves: #1326302
+
+* Wed Jul 08 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-19
+- Add a necessary declaration to common.h
+  Related: #1165793
+
+* Tue Jul 07 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-18
+- Allow importing exported functions with hyphens
+  Resolves: #1237213
+
+* Mon May 18 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-17
+- Make sure a case statement works in command subst
+  Resolves: #1212775
+
+* Fri May 15 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-16
+- Emit warning when --debugger option is used and no debugger is installed
+  Resolves: #1165793
+
+* Thu May 14 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-15
+- Add a CI configfile
+  Related: #1165793
+
+* Mon Apr 27 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-14
+- IFS incorrectly splitting herestrings
+  Resolves: #1196566
+
+* Mon Apr 27 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-13
+- PatternSub code allocates twice
+  Resolves: #1172214
+
+* Sun Jan 11 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-12
+- Shellshock related parser bugs - patches
+  Related: #1175647
+
+* Thu Jan 08 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-11
+- Shellshock related parser bugs (actually upstream patches 52 and 53)
+  Resolves: #1175647
+
+* Fri Sep 26 2014 Michal Hlavinka <mhlavink@redhat.com> - 4.2.46-10
+- CVE-2014-7169
+  Resolves: #1146325
+- amend #1146324 patch to match upstream's
+
+* Mon Sep 15 2014  Ondrej Oprala <ooprala@redhat.com> - 4.2.46-9
+- fix-up the patch
+  Related: #1141648
+
+* Mon Sep 15 2014  Ondrej Oprala <ooprala@redhat.com> - 4.2.46-8
+- check for fishy environment
+  Resolves: #1141648
+
+* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-7
+- Properly document extglob behaviour
+  Resolves: #1126401
+
+* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-6
+- Prevent bash from hanging with certain history settings
+  Resolves: #1126396
+
+* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-5
+- Document continue, break and suspend
+  Resolves: #1126370
+
+* Wed Jul 24 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-4
+- Fix bash visual mode
+  Resolves: #1102813
+
+* Tue Jul 22 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-3
+- Inhibit brace expansion in some cases
+  Resolves: #1116301
+
+* Mon Jul 21 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-2
+- Mention ulimit -c and -f block size in POSIX mode
+  Resolves: #1112709
+
+* Thu Jun 18 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-1
+- Patchlevel 46
+  Resolves: #1073683
+
+* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 4.2.45-5
+- Mass rebuild 2014-01-24
+
+* Fri Jan 24 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.45-4
+- Backport a patch from #964687 (resolves #1034915)
+
+* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 4.2.45-3
+- Mass rebuild 2013-12-27
+
+* Fri Aug 09 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-2
+- Added suggestion to .bashrc how to disable autopaging in systemctl
+  Resolves: #978841
+
+* 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 26 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).
+
+* Tue 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/
+
+* Fri 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
+
+* Wed 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.
+
+* Fri 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