patch-2.1.100 linux/fs/ext2/namei.c

Next file: linux/fs/minix/namei.c
Previous file: linux/fs/ext2/ioctl.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.99/linux/fs/ext2/namei.c linux/fs/ext2/namei.c
@@ -631,7 +631,7 @@
 	retval = -EPERM;
 	if ((dir->i_mode & S_ISVTX) && 
 	    current->fsuid != inode->i_uid &&
-	    current->fsuid != dir->i_uid && !fsuser())
+	    current->fsuid != dir->i_uid && !capable(CAP_FOWNER))
 		goto end_rmdir;
 	if (inode == dir)	/* we may not delete ".", but "../dir" is ok */
 		goto end_rmdir;
@@ -725,7 +725,7 @@
 		goto end_unlink;
 	if ((dir->i_mode & S_ISVTX) &&
 	    current->fsuid != inode->i_uid &&
-	    current->fsuid != dir->i_uid && !fsuser())
+	    current->fsuid != dir->i_uid && !capable(CAP_FOWNER))
 		goto end_unlink;
 
 	retval = -EIO;
@@ -923,7 +923,7 @@
 	retval = -EPERM;
 	if ((old_dir->i_mode & S_ISVTX) && 
 	    current->fsuid != old_inode->i_uid &&
-	    current->fsuid != old_dir->i_uid && !fsuser())
+	    current->fsuid != old_dir->i_uid && !capable(CAP_FOWNER))
 		goto end_rename;
 	if (IS_APPEND(old_inode) || IS_IMMUTABLE(old_inode))
 		goto end_rename;
@@ -964,7 +964,7 @@
 	if (new_inode) {
 		if ((new_dir->i_mode & S_ISVTX) &&
 		    current->fsuid != new_inode->i_uid &&
-		    current->fsuid != new_dir->i_uid && !fsuser())
+		    current->fsuid != new_dir->i_uid && !capable(CAP_FOWNER))
 			goto end_rename;
 		if (IS_APPEND(new_inode) || IS_IMMUTABLE(new_inode))
 			goto end_rename;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov