diff options
| -rw-r--r-- | fs/befs/linuxvfs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c index b6dfee37c7b7..d06cb023ad02 100644 --- a/fs/befs/linuxvfs.c +++ b/fs/befs/linuxvfs.c | |||
| @@ -378,7 +378,8 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino) | |||
| 378 | inode->i_size = 0; | 378 | inode->i_size = 0; |
| 379 | inode->i_blocks = befs_sb->block_size / VFS_BLOCK_SIZE; | 379 | inode->i_blocks = befs_sb->block_size / VFS_BLOCK_SIZE; |
| 380 | strncpy(befs_ino->i_data.symlink, raw_inode->data.symlink, | 380 | strncpy(befs_ino->i_data.symlink, raw_inode->data.symlink, |
| 381 | BEFS_SYMLINK_LEN); | 381 | BEFS_SYMLINK_LEN - 1); |
| 382 | befs_ino->i_data.symlink[BEFS_SYMLINK_LEN - 1] = '\0'; | ||
| 382 | } else { | 383 | } else { |
| 383 | int num_blks; | 384 | int num_blks; |
| 384 | 385 | ||
| @@ -477,6 +478,8 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
| 477 | kfree(link); | 478 | kfree(link); |
| 478 | befs_error(sb, "Failed to read entire long symlink"); | 479 | befs_error(sb, "Failed to read entire long symlink"); |
| 479 | link = ERR_PTR(-EIO); | 480 | link = ERR_PTR(-EIO); |
| 481 | } else { | ||
| 482 | link[len - 1] = '\0'; | ||
| 480 | } | 483 | } |
| 481 | } else { | 484 | } else { |
| 482 | link = befs_ino->i_data.symlink; | 485 | link = befs_ino->i_data.symlink; |
