You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.9 KiB

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_ */