udf: Limit sparing table size
[ Upstream commit 44ac6b829c
]
Although UDF standard allows it, we don't support sparing table larger
than a single block. Check it during mount so that we don't try to
access memory beyond end of buffer.
Reported-by: syzbot+9991561e714f597095da@syzkaller.appspotmail.com
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
parent
e9e791f5c3
commit
01d886b89e
|
@ -1352,6 +1352,12 @@ static int udf_load_sparable_map(struct super_block *sb,
|
|||
(int)spm->numSparingTables);
|
||||
return -EIO;
|
||||
}
|
||||
if (le32_to_cpu(spm->sizeSparingTable) > sb->s_blocksize) {
|
||||
udf_err(sb, "error loading logical volume descriptor: "
|
||||
"Too big sparing table size (%u)\n",
|
||||
le32_to_cpu(spm->sizeSparingTable));
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
for (i = 0; i < spm->numSparingTables; i++) {
|
||||
loc = le32_to_cpu(spm->locSparingTable[i]);
|
||||
|
|
Loading…
Reference in New Issue