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

Bash-Release: 3.1
Patch-ID: bash31-017

Bug-Reported-by: [EMAIL PROTECTED]
Bug-Reference-ID: <[EMAIL PROTECTED]>
Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831

Bug-Description:

Array expansion fails with an arithmetic syntax error when the subscript
appears within double quotes.  For example: ${a["4"]}.

Patch:

*** ../bash-3.1-patched/subst.c Wed Apr 12 08:47:08 2006
--- subst.c     Wed Apr 12 08:49:02 2006
***************
*** 2576,2579 ****
--- 2576,2586 ----
  }
  
+ char *
+ expand_arith_string (string, quoted)
+      char *string;
+ {
+   return (expand_string_if_necessary (string, quoted, expand_string));
+ }
+ 
  #if defined (COND_COMMAND)
  /* Just remove backslashes in STRING.  Returns a new string. */
***************
*** 5249,5253 ****
      t = (char *)0;
  
!   temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
    *e1p = evalexp (temp1, &expok);
    free (temp1);
--- 5256,5260 ----
      t = (char *)0;
  
!   temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
    *e1p = evalexp (temp1, &expok);
    free (temp1);
***************
*** 5294,5298 ****
        t++;
        temp2 = savestring (t);
!       temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, 
expand_string);
        free (temp2);
        t[-1] = ':';
--- 5301,5305 ----
        t++;
        temp2 = savestring (t);
!       temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
        free (temp2);
        t[-1] = ':';
***************
*** 6436,6440 ****
  
          /* Expand variables found inside the expression. */
!         temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, 
expand_string);
          free (temp2);
  
--- 6443,6447 ----
  
          /* Expand variables found inside the expression. */
!         temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
          free (temp2);
  
***************
*** 6478,6482 ****
  
         /* Do initial variable expansion. */
!       temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, 
expand_string);
  
        goto arithsub;
--- 6485,6489 ----
  
         /* Do initial variable expansion. */
!       temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
  
        goto arithsub;
*** ../bash-3.1-patched/subst.h Sun Nov  7 15:12:28 2004
--- subst.h     Mon Mar 27 09:10:38 2006
***************
*** 152,155 ****
--- 152,158 ----
  extern char *expand_assignment_string_to_string __P((char *, int));
  
+ /* Expand an arithmetic expression string */
+ extern char *expand_arith_string __P((char *, int));
+ 
  /* De-quoted quoted characters in STRING. */
  extern char *dequote_string __P((char *));
*** ../bash-3.1-patched/arrayfunc.c     Mon Jul  4 20:25:58 2005
--- arrayfunc.c Mon Mar 27 09:10:47 2006
***************
*** 593,601 ****
    strncpy (exp, s, len - 1);
    exp[len - 1] = '\0';
! #if 0
!   t = expand_string_to_string (exp, 0);
! #else 
!   t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
! #endif
    this_command_name = (char *)NULL;
    val = evalexp (t, &expok);
--- 591,595 ----
    strncpy (exp, s, len - 1);
    exp[len - 1] = '\0';
!   t = expand_arith_string (exp, 0);
    this_command_name = (char *)NULL;
    val = evalexp (t, &expok);
*** ../bash-3.1/patchlevel.h    Wed Jul 20 13:58:20 2005
--- patchlevel.h        Wed Dec  7 13:48:42 2005
***************
*** 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_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet )
                                                Live Strong.
Chet Ramey, ITS, CWRU    [EMAIL PROTECTED]    http://tiswww.tis.case.edu/~chet/


_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash

Reply via email to