Unverified Commit 318d016e authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Check for extremely large size of $AttrDef



Added additional checking for size of $AttrDef.
Added comment.

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 0addfb1c
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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) {