linux/fs/udf
Michael Bommarito 7d1b6adbf9 udf: reject descriptors with oversized CRC length
commit 55d41b0a20 upstream.

udf_read_tagged() skips CRC verification when descCRCLength +
sizeof(struct tag) exceeds the block size.  A crafted UDF image can
set descCRCLength to an oversized value to bypass CRC validation
entirely; the descriptor is then accepted based solely on the 8-bit
tag checksum, which is trivially recomputable.

Reject such descriptors instead of silently accepting them.  A
legitimate single-block descriptor should never have a CRC length that
exceeds the block.

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-6
Assisted-by: Codex:gpt-5-4
Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Link: https://patch.msgid.link/20260413211240.853662-1-michael.bommarito@gmail.com
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-06-01 17:35:22 +02:00
..
balloc.c udf: prevent integer overflow in udf_bitmap_free_blocks() 2024-08-19 05:45:37 +02:00
dir.c udf: Convert udf_readdir() to new directory iteration 2024-10-22 15:40:38 +02:00
directory.c udf: Fix directory iteration for longer tail extents 2025-09-04 14:28:44 +02:00
ecma_167.h udf: Get rid of 0-length arrays in struct fileIdentDesc 2021-08-11 16:54:44 +02:00
file.c udf: Do not update file length for failed writes to inline files 2023-03-10 09:39:59 +01:00
ialloc.c udf: Fix error handling in udf_new_inode() 2022-01-27 11:05:02 +01:00
inode.c fs: udf: fix OOB read in lengthAllocDescs handling 2025-10-19 16:21:38 +02:00
Kconfig docs: filesystems: fix renamed references 2020-04-20 15:45:22 -06:00
lowlevel.c udf: stop using ioctl_by_bdev 2020-05-04 10:13:42 -06:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
misc.c udf: reject descriptors with oversized CRC length 2026-06-01 17:35:22 +02:00
namei.c udf: Fix bogus checksum computation in udf_rename() 2024-10-22 15:40:39 +02:00
osta_udf.h udf: Get rid of 0-length arrays 2021-08-11 16:54:44 +02:00
partition.c udf: Remove pointless union in udf_inode_info 2020-09-29 17:21:54 +02:00
super.c udf: Verify partition map count 2025-08-28 16:24:16 +02:00
symlink.c fs: make helpers idmap mount aware 2021-01-24 14:27:20 +01:00
truncate.c udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size 2022-12-21 17:36:36 +01:00
udf_i.h udf: Preserve link count of system files 2023-03-10 09:40:00 +01:00
udf_sb.h udf: Define EFSCORRUPTED error code 2023-03-10 09:39:46 +01:00
udfdecl.h udf: Allocate name buffer in directory iterator on heap 2024-11-17 15:06:26 +01:00
udfend.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udftime.c udf: udftime: prevent overflow in udf_disk_stamp_to_time() 2024-07-05 09:14:28 +02:00
unicode.c udf: Fix uninitialized array access for some pathnames 2023-07-27 08:46:58 +02:00