提交 7df5fa06 编写于 作者: D Duane Griffin 提交者: Al Viro

befs: ensure fast symlinks are NUL-terminated

Ensure fast symlink targets are NUL-terminated, even if corrupted
on-disk.

Cc: Sergey S. Kostyliov <rathamahata@php4.ru>
Signed-off-by: NDuane Griffin <duaneg@dghda.com>
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 a63d0ff3
...@@ -378,7 +378,8 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino) ...@@ -378,7 +378,8 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)
inode->i_size = 0; inode->i_size = 0;
inode->i_blocks = befs_sb->block_size / VFS_BLOCK_SIZE; inode->i_blocks = befs_sb->block_size / VFS_BLOCK_SIZE;
strncpy(befs_ino->i_data.symlink, raw_inode->data.symlink, strncpy(befs_ino->i_data.symlink, raw_inode->data.symlink,
BEFS_SYMLINK_LEN); BEFS_SYMLINK_LEN - 1);
befs_ino->i_data.symlink[BEFS_SYMLINK_LEN - 1] = '\0';
} else { } else {
int num_blks; int num_blks;
...@@ -477,6 +478,8 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd) ...@@ -477,6 +478,8 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
kfree(link); kfree(link);
befs_error(sb, "Failed to read entire long symlink"); befs_error(sb, "Failed to read entire long symlink");
link = ERR_PTR(-EIO); link = ERR_PTR(-EIO);
} else {
link[len - 1] = '\0';
} }
} else { } else {
link = befs_ino->i_data.symlink; link = befs_ino->i_data.symlink;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册