89 lines
2.1 KiB
Plaintext
89 lines
2.1 KiB
Plaintext
BASH PATCH REPORT
|
|
=================
|
|
|
|
Bash-Release: 3.2
|
|
Patch-ID: bash32-033
|
|
|
|
Bug-Reported-by: Christophe Martin <schplurtz@free.fr>
|
|
Bug-Reference-ID: <465ABA4A.3030805@free.fr>
|
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html
|
|
|
|
Bug-Description:
|
|
|
|
References made within a function to an uninitialized local array variable
|
|
using the [*] subscript in a double-quoted string can result in spurious
|
|
ASCII 127 characters in the expanded value.
|
|
|
|
Patch:
|
|
|
|
*** bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400
|
|
--- bash-3.2/arrayfunc.c 2007-05-31 11:55:46.000000000 -0400
|
|
***************
|
|
*** 723,727 ****
|
|
{
|
|
if (rtype)
|
|
! *rtype = 1;
|
|
if (allow_all == 0)
|
|
{
|
|
--- 723,727 ----
|
|
{
|
|
if (rtype)
|
|
! *rtype = (t[0] == '*') ? 1 : 2;
|
|
if (allow_all == 0)
|
|
{
|
|
*** bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400
|
|
--- bash-3.2/subst.c 2007-11-14 15:43:00.000000000 -0500
|
|
***************
|
|
*** 4908,4915 ****
|
|
intmax_t arg_index;
|
|
SHELL_VAR *var;
|
|
! int atype;
|
|
|
|
ret = 0;
|
|
temp = 0;
|
|
|
|
/* Handle multiple digit arguments, as in ${11}. */
|
|
--- 4973,4981 ----
|
|
intmax_t arg_index;
|
|
SHELL_VAR *var;
|
|
! int atype, rflags;
|
|
|
|
ret = 0;
|
|
temp = 0;
|
|
+ rflags = 0;
|
|
|
|
/* Handle multiple digit arguments, as in ${11}. */
|
|
***************
|
|
*** 4944,4947 ****
|
|
--- 5010,5015 ----
|
|
? quote_string (temp)
|
|
: quote_escapes (temp);
|
|
+ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
|
|
+ rflags |= W_HASQUOTEDNULL;
|
|
}
|
|
#endif
|
|
***************
|
|
*** 4971,4974 ****
|
|
--- 5039,5043 ----
|
|
ret = alloc_word_desc ();
|
|
ret->word = temp;
|
|
+ ret->flags |= rflags;
|
|
}
|
|
return ret;
|
|
*** bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
|
|
--- bash-3.2/patchlevel.h Mon Oct 16 14:22:54 2006
|
|
***************
|
|
*** 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_ */
|
|
|