]>
Commit | Line | Data |
---|---|---|
39cb2ba7 AM |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 4.0 | |
5 | Patch-ID: bash40-005 | |
6 | ||
7 | Bug-Reported-by: Pierre Gaston <pierre.gaston@gmail.com> | |
8 | Bug-Reference-ID: <c440c9800902242338n69f594a4nd66b8748def9cf18@mail.gmail.com> | |
9 | Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00206.html | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | The `declare' builtin dumped core when attempting to assign associative | |
14 | array indices containing some special characters, even when they were | |
15 | quoted before being expanded. | |
16 | ||
17 | Patch: | |
18 | ||
19 | *** ../bash-4.0/builtins/declare.def 2009-01-04 14:32:22.000000000 -0500 | |
20 | --- builtins/declare.def 2009-02-26 11:40:16.000000000 -0500 | |
21 | *************** | |
22 | *** 296,299 **** | |
23 | --- 296,306 ---- | |
24 | if (t = strchr (name, '[')) /* ] */ | |
25 | { | |
26 | + /* If offset != 0 we have already validated any array reference */ | |
27 | + if (offset == 0 && valid_array_reference (name) == 0) | |
28 | + { | |
29 | + sh_invalidid (name); | |
30 | + assign_error++; | |
31 | + NEXT_VARIABLE (); | |
32 | + } | |
33 | subscript_start = t; | |
34 | *t = '\0'; | |
35 | *************** | |
36 | *** 485,489 **** | |
37 | /* declare -a name[[n]] or declare name[n] makes name an indexed | |
38 | array variable. */ | |
39 | ! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) | |
40 | var = convert_var_to_array (var); | |
41 | #endif /* ARRAY_VARS */ | |
42 | --- 492,496 ---- | |
43 | /* declare -a name[[n]] or declare name[n] makes name an indexed | |
44 | array variable. */ | |
45 | ! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) | |
46 | var = convert_var_to_array (var); | |
47 | #endif /* ARRAY_VARS */ | |
48 | *** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 | |
49 | --- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 | |
50 | *************** | |
51 | *** 26,30 **** | |
52 | looks for to find the patch level (for the sccs version string). */ | |
53 | ||
54 | ! #define PATCHLEVEL 4 | |
55 | ||
56 | #endif /* _PATCHLEVEL_H_ */ | |
57 | --- 26,30 ---- | |
58 | looks for to find the patch level (for the sccs version string). */ | |
59 | ||
60 | ! #define PATCHLEVEL 5 | |
61 | ||
62 | #endif /* _PATCHLEVEL_H_ */ | |
63 |