Date: Fri, 2 Jul 2004 16:08:35 -0700 From: Chris Wright Subject: [PATCH] check attr updates in /proc Any proc entry with default proc_file_inode_operations allow unauthorized attribute updates. This is very dangerous for proc entries that rely solely on file permissions for open/read/write. Signed-off-by: Chris Wright ===== fs/proc/generic.c 1.30 vs edited ===== Index: linux-2.6.7-ck/fs/proc/generic.c =================================================================== --- linux-2.6.7-ck.orig/fs/proc/generic.c 2004-05-23 12:54:55.000000000 +1000 +++ linux-2.6.7-ck/fs/proc/generic.c 2004-07-08 00:58:43.076709752 +1000 @@ -230,14 +230,21 @@ static int proc_notify_change(struct dentry *dentry, struct iattr *iattr) { struct inode *inode = dentry->d_inode; - int error = inode_setattr(inode, iattr); - if (!error) { - struct proc_dir_entry *de = PDE(inode); - de->uid = inode->i_uid; - de->gid = inode->i_gid; - de->mode = inode->i_mode; - } + struct proc_dir_entry *de = PDE(inode); + int error; + + error = inode_change_ok(inode, iattr); + if (error) + goto out; + error = inode_setattr(inode, iattr); + if (error) + goto out; + + de->uid = inode->i_uid; + de->gid = inode->i_gid; + de->mode = inode->i_mode; +out: return error; }