mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
dcache: don't expose uninitialized memory in /proc/<pid>/fd/<fd>
Well, it's not especially important that target->d_iname get the contents of dentry->d_iname, but it's important that it get initialized with *something*, otherwise we're just exposing some random piece of memory to anyone who reads the link at /proc/<pid>/fd/<fd> for the deleted file, when it's still held open by someone. I've run a test program that copies a short (<36 character) name ontop of a long (>=36 character) name and see that the first time I run it, without this patch, I get unpredicatable results out of /proc/<pid>/fd/<fd>. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b68680e473
commit
321bcf9216
@ -1479,6 +1479,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
|
||||
* dentry:internal, target:external. Steal target's
|
||||
* storage and make target internal.
|
||||
*/
|
||||
memcpy(target->d_iname, dentry->d_name.name,
|
||||
dentry->d_name.len + 1);
|
||||
dentry->d_name.name = target->d_name.name;
|
||||
target->d_name.name = target->d_iname;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user