diff options
author | Chet Ramey <chet.ramey@case.edu> | 2011-11-21 20:49:12 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2011-11-21 20:49:12 -0500 |
commit | 89a92869e56aba4e4cab2d639c00a86f0545c862 (patch) | |
tree | e1cd4da50318af8ab1f3141d39d4b0b8e1e7c500 /builtins/declare.def | |
parent | 17345e5ad288f7543b77b23a25aa380eacc279f2 (diff) | |
download | android_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.tar.gz android_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.tar.bz2 android_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.zip |
Bash-4.0 patchlevel 38
Diffstat (limited to 'builtins/declare.def')
-rw-r--r-- | builtins/declare.def | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/builtins/declare.def b/builtins/declare.def index 9931f5e..bd7d6b6 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -295,6 +295,13 @@ declare_internal (list, local_var) subscript_start = (char *)NULL; if (t = strchr (name, '[')) /* ] */ { + /* If offset != 0 we have already validated any array reference */ + if (offset == 0 && valid_array_reference (name) == 0) + { + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } subscript_start = t; *t = '\0'; making_array_special = 1; @@ -484,7 +491,7 @@ declare_internal (list, local_var) } /* declare -a name[[n]] or declare name[n] makes name an indexed array variable. */ - else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) + else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) var = convert_var_to_array (var); #endif /* ARRAY_VARS */ |