Mercurial > vim
changeset 9211:d2b9e454c73d v7.4.1889
commit https://github.com/vim/vim/commit/35d88f4e2ff5dcd9904f04612d5febede996137c
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jun 4 14:52:00 2016 +0200
patch 7.4.1889
Problem: When umask is set to 0177 Vim can't create temp files. (Lcd)
Solution: Also correct umask when using mkdtemp().
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 04 Jun 2016 15:00:05 +0200 |
parents | 462af900d3b6 |
children | ac88df1cd99a |
files | src/fileio.c src/version.c |
diffstat | 2 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -7389,10 +7389,20 @@ vim_tempname( add_pathsep(itmp); # ifdef HAVE_MKDTEMP - /* Leave room for filename */ - STRCAT(itmp, "vXXXXXX"); - if (mkdtemp((char *)itmp) != NULL) - vim_settempdir(itmp); + { +# if defined(UNIX) || defined(VMS) + /* Make sure the umask doesn't remove the executable bit. + * "repl" has been reported to use "177". */ + mode_t umask_save = umask(077); +# endif + /* Leave room for filename */ + STRCAT(itmp, "vXXXXXX"); + if (mkdtemp((char *)itmp) != NULL) + vim_settempdir(itmp); +# if defined(UNIX) || defined(VMS) + (void)umask(umask_save); +# endif + } # else /* Get an arbitrary number of up to 6 digits. When it's * unlikely that it already exists it will be faster,