diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-05-21 08:05:53 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-05-21 08:05:53 +0000 |
commit | 2762ac6c1944e320cb880f40866d47475f9892ba (patch) | |
tree | cfe0e1fe100256e55a85a3f44343a2d2e2436380 /winsup | |
parent | cb1f8161c1524fe06dd331cda3e64a0326abd51c (diff) | |
download | cygnal-2762ac6c1944e320cb880f40866d47475f9892ba.tar.gz cygnal-2762ac6c1944e320cb880f40866d47475f9892ba.tar.bz2 cygnal-2762ac6c1944e320cb880f40866d47475f9892ba.zip |
* syscalls.cc (FILTERED_MODE): Define valid chmod mode mask.
(chmod): Call fh->fchmod with filtered mode.
(fchmod): Ditto.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c56fc6ebf..75ce68da4 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2008-05-21 Corinna Vinschen <corinna@vinschen.de> + + * syscalls.cc (FILTERED_MODE): Define valid chmod mode mask. + (chmod): Call fh->fchmod with filtered mode. + (fchmod): Ditto. + 2008-05-20 Corinna Vinschen <corinna@vinschen.de> * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Fix test for diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index aa4819d6d..01e744570 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1119,6 +1119,9 @@ chmod_device (path_conv& pc, mode_t mode) return mknod_worker (pc.get_win32 (), pc.dev.mode & S_IFMT, mode, pc.dev.major, pc.dev.minor); } +#define FILTERED_MODE(m) ((m) & (S_ISUID | S_ISGID | S_ISVTX \ + | S_IRWXU | S_IRWXG | S_IRWXO)) + /* chmod: POSIX 5.6.4.1 */ extern "C" int chmod (const char *path, mode_t mode) @@ -1134,7 +1137,7 @@ chmod (const char *path, mode_t mode) set_errno (fh->error ()); } else - res = fh->fchmod (mode); + res = fh->fchmod (FILTERED_MODE (mode)); delete fh; error: @@ -1154,7 +1157,7 @@ fchmod (int fd, mode_t mode) return -1; } - return cfd->fchmod (mode); + return cfd->fchmod (FILTERED_MODE (mode)); } static void |