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: Duane Griffin <duaneg@dghda.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
a63d0ff31a
commit
7df5fa06de
|
@ -378,7 +378,8 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)
|
|||
inode->i_size = 0;
|
||||
inode->i_blocks = befs_sb->block_size / VFS_BLOCK_SIZE;
|
||||
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 {
|
||||
int num_blks;
|
||||
|
||||
|
@ -477,6 +478,8 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||
kfree(link);
|
||||
befs_error(sb, "Failed to read entire long symlink");
|
||||
link = ERR_PTR(-EIO);
|
||||
} else {
|
||||
link[len - 1] = '\0';
|
||||
}
|
||||
} else {
|
||||
link = befs_ino->i_data.symlink;
|
||||
|
|
Loading…
Reference in New Issue