1
0
forked from aniani/vim

patch 8.0.1300: file permissions may end up wrong when writing

Problem:    File permissions may end up wrong when writing.
Solution:   Use fchmod() instead of chmod() when possible.  Don't truncate
            until we know we can change the file.
This commit is contained in:
Bram Moolenaar
2017-11-16 17:03:45 +01:00
parent a42ad57e48
commit cd142e3369
7 changed files with 88 additions and 24 deletions

View File

@@ -2725,9 +2725,8 @@ mch_getperm(char_u *name)
}
/*
* set file permission for 'name' to 'perm'
*
* return FAIL for failure, OK otherwise
* Set file permission for "name" to "perm".
* Return FAIL for failure, OK otherwise.
*/
int
mch_setperm(char_u *name, long perm)
@@ -2741,6 +2740,18 @@ mch_setperm(char_u *name, long perm)
(mode_t)perm) == 0 ? OK : FAIL);
}
#if defined(HAVE_FCHMOD) || defined(PROTO)
/*
* Set file permission for open file "fd" to "perm".
* Return FAIL for failure, OK otherwise.
*/
int
mch_fsetperm(int fd, long perm)
{
return (fchmod(fd, (mode_t)perm) == 0 ? OK : FAIL);
}
#endif
#if defined(HAVE_ACL) || defined(PROTO)
# ifdef HAVE_SYS_ACL_H
# include <sys/acl.h>