mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
GFS2: Fix permissions checking for setflags ioctl()
commit 7df0e0397b upstream.
We should be checking for the ownership of the file for which
flags are being set, rather than just for write access.
Reported-by: Dan Rosenberg <dan.j.rosenberg@gmail.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
94f98453ea
commit
55442a2a4c
@@ -218,6 +218,11 @@ static int do_gfs2_set_flags(struct file *filp, u32 reqflags, u32 mask)
|
||||
if (error)
|
||||
goto out_drop_write;
|
||||
|
||||
error = -EACCES;
|
||||
if (!is_owner_or_cap(inode))
|
||||
goto out;
|
||||
|
||||
error = 0;
|
||||
flags = ip->i_diskflags;
|
||||
new_flags = (flags & ~mask) | (reqflags & mask);
|
||||
if ((new_flags ^ flags) == 0)
|
||||
@@ -275,8 +280,10 @@ static int gfs2_set_flags(struct file *filp, u32 __user *ptr)
|
||||
{
|
||||
struct inode *inode = filp->f_path.dentry->d_inode;
|
||||
u32 fsflags, gfsflags;
|
||||
|
||||
if (get_user(fsflags, ptr))
|
||||
return -EFAULT;
|
||||
|
||||
gfsflags = fsflags_cvt(fsflags_to_gfs2, fsflags);
|
||||
if (!S_ISDIR(inode->i_mode)) {
|
||||
if (gfsflags & GFS2_DIF_INHERIT_JDATA)
|
||||
|
||||
Reference in New Issue
Block a user