aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2013-01-31 16:04:40 +0000
committerBrooks Davis <brooks@FreeBSD.org>2013-01-31 16:04:40 +0000
commit7a06a9247d52008c1dcf520ee61f316a6c8bdd19 (patch)
tree124e6648e770fd1d9c50d81caf115d655a8efdc7 /usr.bin
parent4b6b0f4163d85f65bd312d79c1a06911d7a83943 (diff)
downloadsrc-7a06a9247d52008c1dcf520ee61f316a6c8bdd19.tar.gz
src-7a06a9247d52008c1dcf520ee61f316a6c8bdd19.zip
When in -U mode do avoid setting SUID bits, but do not modify the mode
variable so the intended mode can be logged correctly if -M is specified. Sponsored by: DARPA, AFRL
Notes
Notes: svn path=/head/; revision=246147
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/xinstall/xinstall.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c
index a173873be195..15b115abfcc1 100644
--- a/usr.bin/xinstall/xinstall.c
+++ b/usr.bin/xinstall/xinstall.c
@@ -953,9 +953,8 @@ install(const char *from_name, const char *to_name, u_long fset, u_int flags)
}
if (mode != (to_sb.st_mode & ALLPERMS)) {
- if (dounpriv)
- mode &= S_IRWXU|S_IRWXG|S_IRWXO;
- if (fchmod(to_fd, mode)) {
+ if (fchmod(to_fd,
+ dounpriv ? mode & (S_IRWXU|S_IRWXG|S_IRWXO) : mode)) {
serrno = errno;
(void)unlink(to_name);
errno = serrno;