patch-2.2.13 linux/fs/open.c
Next file: linux/fs/proc/array.c
Previous file: linux/fs/nfsd/vfs.c
Back to the patch index
Back to the overall index
- Lines: 29
- Date:
Tue Oct 19 17:14:02 1999
- Orig file:
v2.2.12/linux/fs/open.c
- Orig date:
Tue Oct 19 17:10:39 1999
diff -u --recursive --new-file v2.2.12/linux/fs/open.c linux/fs/open.c
@@ -535,10 +535,13 @@
* non-root user, remove the setuid bit.
* 19981026 David C Niemi <niemi@tux.org>
*
+ * Changed this to apply to all users, including root, to avoid
+ * some races. This is the behavior we had in 2.0. The check for
+ * non-root was definitely wrong for 2.2 anyway, as it should
+ * have been using CAP_FSETID rather than fsuid -- 19990830 SD.
*/
if ((inode->i_mode & S_ISUID) == S_ISUID &&
- !S_ISDIR(inode->i_mode)
- && current->fsuid)
+ !S_ISDIR(inode->i_mode))
{
newattrs.ia_mode &= ~S_ISUID;
newattrs.ia_valid |= ATTR_MODE;
@@ -548,9 +551,11 @@
* by a non-root user, remove the setgid bit UNLESS there is no group
* execute bit (this would be a file marked for mandatory locking).
* 19981026 David C Niemi <niemi@tux.org>
+ *
+ * Removed the fsuid check (see the comment above) -- 19990830 SD.
*/
if (((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))
- && !S_ISDIR(inode->i_mode) && current->fsuid)
+ && !S_ISDIR(inode->i_mode))
{
newattrs.ia_mode &= ~S_ISGID;
newattrs.ia_valid |= ATTR_MODE;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)