diff options
author | Bart Schaefer <barts@users.sourceforge.net> | 2000-07-02 17:21:54 +0000 |
---|---|---|
committer | Bart Schaefer <barts@users.sourceforge.net> | 2000-07-02 17:21:54 +0000 |
commit | 4ed8c26c50dea84a01903e6d80b68701d9c4f3c0 (patch) | |
tree | c35b85c5cf130f31c96cb8d33191ddbe5f696ade | |
parent | 0f398e9d2fd4f653cf24456bf4fbb4ce277f98e7 (diff) | |
download | zsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.tar.gz zsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.tar.xz zsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.zip |
12133: Protect completion system from stray error output and assorted fatal
errors when expanding strings taken from the command line.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Completion/Core/_expand | 4 | ||||
-rw-r--r-- | Completion/Core/_path_files | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 5276d12f0..81a1d3a7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2000-07-02 Bart Schaefer <schaefer@zsh.org> + + * 12133: Completion/Core/_expand, Completion/Core/_path_files: + Discard error output from parameter expansions and use "eval" to + protect the completion system from parse errors and other garbage + in the strings taken from the command line. + 2000-06-29 Sven Wischnowsky <wischnow@zsh.org> * 12125: Src/parse.c, Test/09funcdef.ztst: fix for `foo () print diff --git a/Completion/Core/_expand b/Completion/Core/_expand index 77d9c8794..5ac196428 100644 --- a/Completion/Core/_expand +++ b/Completion/Core/_expand @@ -63,7 +63,7 @@ if [[ "$force" = *s* ]] || eval exp\=\( ${${(q)exp}:gs/\\{/\{/:gs/\\}/\}/} \) exp=( ${${(e)exp//\\[ ]/ }//(#b)([ -])/\\$match[1]} ) +])/\\$match[1]} ) 2>/dev/null else exp=( ${exp:s/\\\$/\$} ) fi @@ -77,7 +77,7 @@ subd=("$exp[@]") # Now try globbing. [[ "$force" = *g* ]] || zstyle -T ":completion:${curcontext}:" glob && - exp=( ${~exp} ) + eval 'exp=( ${~exp} )' 2>/dev/null # If we don't have any expansions or only one and that is the same # as the original string, we let other completers run. diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files index 250f6c750..df7f50d8a 100644 --- a/Completion/Core/_path_files +++ b/Completion/Core/_path_files @@ -322,7 +322,7 @@ for prepath in "$prepaths[@]"; do else compfiles -p$cfopt tmp1 accex "$skipped" "$_matcher" '' fake "$pats[@]" fi - tmp1=( $~tmp1 ) + eval 'tmp1=( $~tmp1 )' 2>/dev/null if [[ -n "$PREFIX$SUFFIX" ]]; then # See which of them match what's on the line. |