diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-06-20 07:15:38 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-06-20 07:15:38 +0000 |
commit | fb7bc3a9c7458b1492e7d7a766202d0cb0386185 (patch) | |
tree | 49890c4ec285a28e9194cca9c070cfae6a132303 /Completion/Core/compdump | |
parent | cde71bb1a58e8fd9a953106059e9415ab166de86 (diff) | |
download | zsh-fb7bc3a9c7458b1492e7d7a766202d0cb0386185.tar.gz zsh-fb7bc3a9c7458b1492e7d7a766202d0cb0386185.tar.xz zsh-fb7bc3a9c7458b1492e7d7a766202d0cb0386185.zip |
a bit of security for compinit (avoid using things writable by others); avoid handling files with the same name twice; remove compconf (11998)
Diffstat (limited to 'Completion/Core/compdump')
-rw-r--r-- | Completion/Core/compdump | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Completion/Core/compdump b/Completion/Core/compdump index 3f013c938..de998bbd2 100644 --- a/Completion/Core/compdump +++ b/Completion/Core/compdump @@ -16,13 +16,20 @@ emulate -L zsh setopt extendedglob -typeset _d_file _d_f _d_bks _d_line _d_als +typeset _d_file _d_f _d_bks _d_line _d_als _d_files _d_file=${_comp_dumpfile-${0:h}/compinit.dump}.$HOST.$$ [[ $_d_file = //* ]] && _d_file=${_d_file[2,-1]} -typeset -U _d_files -_d_files=( ${^~fpath:/.}/^([^_]*|*~|*.zwc)(N:t) ) +_d_files=( ${^~fpath:/.}/^([^_]*|*~|*.zwc)(N) ) + +if [[ -n "$_comp_secure" ]]; then + _d_wdirs=( ${^fpath}(Nf:g+w:,f:o+w:,^u0u${EUID}) ) + _d_wfiles=( ${^~fpath:/.}/^([^_]*|*~|*.zwc)(N^u0u${EUID}) ) + + (( $#_d_wfiles )) && _d_files=( "${(@)_d_files:#(${(j:|:)_d_wfiles})}" ) + (( $#_d_wdirs )) && _d_files=( "${(@)_d_files:#(${(j:|:)_d_wdirs})/*}" ) +fi print "#files: $#_d_files" > $_d_file |