diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 20:10:00 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 20:10:00 -0700 |
commit | 7b82dc0e64e93f430182f36b46b79fcee87d3532 (patch) | |
tree | 28c61be85dd899cdb096ac15c65b521b0db60ea8 /fs/open.c | |
parent | 1efd48b3ae8f89a1d04f1e36be96764d7bf43ae9 (diff) | |
download | linux-stable-7b82dc0e64e93f430182f36b46b79fcee87d3532.tar.gz linux-stable-7b82dc0e64e93f430182f36b46b79fcee87d3532.tar.bz2 linux-stable-7b82dc0e64e93f430182f36b46b79fcee87d3532.zip |
Remove suid/sgid bits on [f]truncate()
.. to match what we do on write(). This way, people who write to files
by using [f]truncate + writable mmap have the same semantics as if they
were using the write() family of system calls.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/open.c')
-rw-r--r-- | fs/open.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/open.c b/fs/open.c index ca9981c4a658..0d515d161974 100644 --- a/fs/open.c +++ b/fs/open.c @@ -210,6 +210,9 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, newattrs.ia_valid |= ATTR_FILE; } + /* Remove suid/sgid on truncate too */ + newattrs.ia_valid |= should_remove_suid(dentry); + mutex_lock(&dentry->d_inode->i_mutex); err = notify_change(dentry, &newattrs); mutex_unlock(&dentry->d_inode->i_mutex); |