CVE-2026-46169

hfsplus: fix uninit-value by validating catalog record size

published May 28, 2026

CVSS
—
EPSS
0%
Percentile
2.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

hfsplus: fix uninit-value by validating catalog record size

Syzbot reported a KMSAN uninit-value issue in hfsplus_strcasecmp(). The

root cause is that hfs_brec_read() doesn't validate that the on-disk

record size matches the expected size for the record type being read.

When mounting a corrupted filesystem, hfs_brec_read() may read less data

than expected. For example, when reading a catalog thread record, the

debug output showed:

HFSPLUS_BREC_READ: rec_len=520, fd->entrylength=26

HFSPLUS_BREC_READ: WARNING - entrylength (26) < rec_len (520) - PARTIAL READ!

hfs_brec_read() only validates that entrylength is not greater than the

buffer size, but doesn't check if it's less than expected. It successfully

reads 26 bytes into a 520-byte structure and returns success, leaving 494

bytes uninitialized.

This uninitialized data in tmp.thread.nodeName then gets copied by

hfsplus_cat_build_key_uni() and used by hfsplus_strcasecmp(), triggering

the KMSAN warning when the uninitialized bytes are used as array indices

in case_fold().

Fix by introducing hfsplus_brec_read_cat() wrapper that:

1. Calls hfs_brec_read() to read the data

2. Validates the record size based on the type field:

- Fixed size for folder and file records

- Variable size for thread records (depends on string length)

3. Returns -EIO if size doesn't match expected

For thread records, check against HFSPLUS_MIN_THREAD_SZ before reading

nodeName.length to avoid reading uninitialized data at call sites that

don't zero-initialize the entry structure.

Also initialize the tmp variable in hfsplus_find_cat() as defensive

programming to ensure no uninitialized data even if validation is

bypassed.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00130 · 2.4th percentile
Published
2026-05-28T09:36Z
EPSS history
Timeline
  • 28 MAY 09:36Z
    hfsplus: fix uninit-value by validating catalog record size
    cvelistv5