]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
udf: validate VAT inode size for old VAT format
authorJan Kara <jack@suse.cz>
Fri, 12 Jun 2026 11:50:04 +0000 (13:50 +0200)
committerJan Kara <jack@suse.cz>
Fri, 12 Jun 2026 11:52:47 +0000 (13:52 +0200)
Validate VAT inode is large enough to contain at least the header for
pre-2.00 UDF media format.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/super.c

index 1b5282790de6f08869edd4daf7d82c29f64d9c65..c7110d26d6fe7a7134781e97f9ebbb6a54657239 100644 (file)
@@ -1242,6 +1242,11 @@ static int udf_load_vat(struct super_block *sb, int p_index, int type1_index)
 
        if (map->s_partition_type == UDF_VIRTUAL_MAP15) {
                map->s_type_specific.s_virtual.s_start_offset = 0;
+               if (sbi->s_vat_inode->i_size < 36) {
+                       udf_err(sb, "Too short VAT inode size %lld\n",
+                               sbi->s_vat_inode->i_size);
+                       return -EFSCORRUPTED;
+               }
                map->s_type_specific.s_virtual.s_num_entries =
                        (sbi->s_vat_inode->i_size - 36) >> 2;
        } else if (map->s_partition_type == UDF_VIRTUAL_MAP20) {