Ondrej Oprala 483eb9
			     BASH PATCH REPORT
Ondrej Oprala 483eb9
			     =================
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
Bash-Release:	4.2
Ondrej Oprala 483eb9
Patch-ID:	bash42-046
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
Bug-Reported-by:	"Theodoros V. Kalamatianos" <thkala@gmail.com>
Ondrej Oprala 483eb9
Bug-Reference-ID:	<20140112011131.GE17667@infinity.metashade.com>
Ondrej Oprala 483eb9
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-01/msg00044.html
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
Bug-Description:
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
Bash-4.2 patch 32 introduced a problem with "$@" and arrays expanding empty
Ondrej Oprala 483eb9
positional parameters or array elements when using substring expansion,
Ondrej Oprala 483eb9
pattern substitution, or case modfication.  The empty parameters or array
Ondrej Oprala 483eb9
elements are removed instead of expanding to empty strings ("").
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
Patch (apply with `patch -p0'):
Ondrej Oprala 483eb9
Ondrej Oprala 483eb9
*** ../bash-4.2-patched/subst.c	2012-12-31 11:52:56.000000000 -0500
Ondrej Oprala 483eb9
--- subst.c	2014-03-31 14:19:56.000000000 -0400
Ondrej Oprala 483eb9
***************
Ondrej Oprala 483eb9
*** 7243,7247 ****
Ondrej Oprala 483eb9
        ret = alloc_word_desc ();
Ondrej Oprala 483eb9
        ret->word = temp1;
Ondrej Oprala 483eb9
!       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
Ondrej Oprala 483eb9
  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
Ondrej Oprala 483eb9
        return ret;
Ondrej Oprala 483eb9
--- 7243,7253 ----
Ondrej Oprala 483eb9
        ret = alloc_word_desc ();
Ondrej Oprala 483eb9
        ret->word = temp1;
Ondrej Oprala 483eb9
!       /* We test quoted_dollar_atp because we want variants with double-quoted
Ondrej Oprala 483eb9
! 	 "$@" to take a different code path. In fact, we make sure at the end
Ondrej Oprala 483eb9
! 	 of expand_word_internal that we're only looking at these flags if
Ondrej Oprala 483eb9
! 	 quoted_dollar_at == 0. */
Ondrej Oprala 483eb9
!       if (temp1 && 
Ondrej Oprala 483eb9
!           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
Ondrej Oprala 483eb9
! 	  QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
Ondrej Oprala 483eb9
  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
Ondrej Oprala 483eb9
        return ret;
Ondrej Oprala 483eb9
*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
Ondrej Oprala 483eb9
--- patchlevel.h	Thu Feb 24 21:41:34 2011
Ondrej Oprala 483eb9
***************
Ondrej Oprala 483eb9
*** 26,30 ****
Ondrej Oprala 483eb9
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 483eb9
  
Ondrej Oprala 483eb9
! #define PATCHLEVEL 45
Ondrej Oprala 483eb9
  
Ondrej Oprala 483eb9
  #endif /* _PATCHLEVEL_H_ */
Ondrej Oprala 483eb9
--- 26,30 ----
Ondrej Oprala 483eb9
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 483eb9
  
Ondrej Oprala 483eb9
! #define PATCHLEVEL 46
Ondrej Oprala 483eb9
  
Ondrej Oprala 483eb9
  #endif /* _PATCHLEVEL_H_ */