BASH PATCH REPORT
                            =================

Bash-Release:   4.3
Patch-ID:       bash43-024

Bug-Reported-by:        Corentin Peuvrel <[email protected]>
Bug-Reference-ID:       <[email protected]>
Bug-Reference-URL:      http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html

Bug-Description:

Indirect variable references do not work correctly if the reference
variable expands to an array reference using a subscript other than 0
(e.g., foo='bar[1]' ; echo ${!foo}).

Patch (apply with `patch -p0'):

*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400
--- subst.c     2014-07-23 09:58:19.000000000 -0400
***************
*** 7375,7379 ****

   if (want_indir)
!     tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
   else
     tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
--- 7445,7455 ----

   if (want_indir)
!     {
!       tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
!       /* Turn off the W_ARRAYIND flag because there is no way for this function
!        to return the index we're supposed to be using. */
!       if (tdesc && tdesc->flags)
!       tdesc->flags &= ~W_ARRAYIND;
!     }
   else
     tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
*** ../bash-4.3/patchlevel.h    2012-12-29 10:47:57.000000000 -0500
--- patchlevel.h        2014-03-20 20:01:28.000000000 -0400
***************
*** 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_ */