diff options
Diffstat (limited to 'package/bash/bash31-017')
| -rw-r--r-- | package/bash/bash31-017 | 131 | 
1 files changed, 131 insertions, 0 deletions
diff --git a/package/bash/bash31-017 b/package/bash/bash31-017 new file mode 100644 index 000000000..60e4acdfa --- /dev/null +++ b/package/bash/bash31-017 @@ -0,0 +1,131 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.1 +Patch-ID: bash31-017 + +Bug-Reported-by: syphir@syphir.sytes.net +Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net> +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/subst.c	Wed Apr 12 08:47:08 2006 +--- bash-3.1/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/subst.h	Sun Nov  7 15:12:28 2004 +--- bash-3.1/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 +--- bash-3.1/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_ */  | 
