fs/ntfs3: Check for extremely large size of $AttrDef
Added additional checking for size of $AttrDef. Added comment. Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
0addfb1c22
commit
318d016e42
@ -1185,10 +1185,18 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (inode->i_size < sizeof(struct ATTR_DEF_ENTRY)) {
|
||||
/*
|
||||
* Typical $AttrDef contains up to 20 entries.
|
||||
* Check for extremely large size.
|
||||
*/
|
||||
if (inode->i_size < sizeof(struct ATTR_DEF_ENTRY) ||
|
||||
inode->i_size > 100 * sizeof(struct ATTR_DEF_ENTRY)) {
|
||||
ntfs_err(sb, "Looks like $AttrDef is corrupted (size=%llu).",
|
||||
inode->i_size);
|
||||
err = -EINVAL;
|
||||
goto put_inode_out;
|
||||
}
|
||||
|
||||
bytes = inode->i_size;
|
||||
sbi->def_table = t = kmalloc(bytes, GFP_NOFS | __GFP_NOWARN);
|
||||
if (!t) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user