diff options
Diffstat (limited to 'sys-kernel/uclinux-sources/files/uclinux-sources-2.6.ProcPerms.patch')
-rw-r--r-- | sys-kernel/uclinux-sources/files/uclinux-sources-2.6.ProcPerms.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sys-kernel/uclinux-sources/files/uclinux-sources-2.6.ProcPerms.patch b/sys-kernel/uclinux-sources/files/uclinux-sources-2.6.ProcPerms.patch new file mode 100644 index 000000000000..d90b8d1815d4 --- /dev/null +++ b/sys-kernel/uclinux-sources/files/uclinux-sources-2.6.ProcPerms.patch @@ -0,0 +1,49 @@ +# This is a BitKeeper generated diff -Nru style patch. +# +# ChangeSet +# 2004/07/02 18:48:26-07:00 chrisw@osdl.org +# [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 <chrisw@osdl.org> +# Signed-off-by: Linus Torvalds <torvalds@osdl.org> +# +# fs/proc/generic.c +# 2004/07/02 15:47:55-07:00 chrisw@osdl.org +14 -7 +# check attr updates in /proc +# +diff -Nru a/fs/proc/generic.c b/fs/proc/generic.c +--- a/fs/proc/generic.c 2004-07-08 17:03:20 -07:00 ++++ b/fs/proc/generic.c 2004-07-08 17:03:20 -07:00 +@@ -231,14 +231,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; + } + |