Remove suid/sgid bits on [f]truncate()
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 9 May 2007 03:10:00 +0000 (20:10 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 9 May 2007 03:10:00 +0000 (20:10 -0700)
.. 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>
fs/open.c

index ca9981c4a658247bb6e29aaaaad8fa88f4d99dd8..0d515d1619747b00e724471a407f2a6cf6ea51d7 100644 (file)
--- 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);