diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2014-12-28 00:49:08 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2014-12-28 00:49:08 -0800 |
commit | 33b395806470eeac408070fec535bfd5efc20a2c (patch) | |
tree | 460b4348ea6401c36bd3488a0bf3fe12f9b4d7c4 /Completion/Unix/Command | |
parent | 200accac63deae99eb9656b26363c85648bd6748 (diff) | |
download | zsh-33b395806470eeac408070fec535bfd5efc20a2c.tar.gz zsh-33b395806470eeac408070fec535bfd5efc20a2c.tar.xz zsh-33b395806470eeac408070fec535bfd5efc20a2c.zip |
34068: create tempfiles without forking, and safe temp directory creation
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r-- | Completion/Unix/Command/_cvs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Completion/Unix/Command/_cvs b/Completion/Unix/Command/_cvs index 3c06e0481..31997ec09 100644 --- a/Completion/Unix/Command/_cvs +++ b/Completion/Unix/Command/_cvs @@ -704,15 +704,18 @@ _cvs_sub_modules() { _cvs_run() { local cvsroot="$1" dir="$2" shift 2 - local d=/tmp/zsh-cvs-work-$$ - mkdir $d >&/dev/null - cd $d - mkdir CVS >&/dev/null + local d=${TMPPREFIX:-/tmp/zsh}-cvs-work-$$ + rm -rf $d + mkdir $d && + ( + chmod 0700 $d && + builtin cd -q $d && + mkdir CVS >&/dev/null || return 1 print -r - "$cvsroot" > CVS/Root print "$dir" > CVS/Repository print D > CVS/Entries CVS_IGNORE_REMOTE_ROOT= cvs "$@" - cd $OLDPWD + ) rm -rf $d } |