CVE-2026-46169: hfsplus: fix uninit-value by validating catalog record size

Published May 28, 2026
·
Updated

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 hfsplusstrcasecmp(). The root cause is that hfsbrecread() doesn't validate that the on-disk record size matches the expected size for the record type being read.

When mounting a corrupted filesystem, hfsbrecread() may read less data than expected. For example, when reading a catalog thread record, the debug output showed:

HFSPLUSBRECREAD: reclen=520, fd->entrylength=26 HFSPLUSBRECREAD: WARNING - entrylength (26) < reclen (520) - PARTIAL READ!

hfsbrecread() 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 hfspluscatbuildkeyuni() and used by hfsplusstrcasecmp(), triggering the KMSAN warning when the uninitialized bytes are used as array indices in casefold().

Fix by introducing hfsplusbrecreadcat() wrapper that: 1. Calls hfsbrecread() 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 HFSPLUSMINTHREADSZ 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 hfsplusfindcat() as defensive programming to ensure no uninitialized data even if validation is bypassed.

Affected Software

10 affected components
Linux Linux kernel (hfsplus)
Linux Linux kernel>=2.6.12.1<6.6.140
Linux Linux kernel>=6.7<6.12.88
Linux Linux kernel>=6.13<6.18.30
Linux Linux kernel>=6.19<7.0.7
Linux Linux kernel=2.6.12
Linux Linux kernel=2.6.12-rc2
Linux Linux kernel=2.6.12-rc3
Linux Linux kernel=2.6.12-rc4
Linux Linux kernel=2.6.12-rc5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Initialize the tmp variable in hfsplus_find_cat() as a defensive measure (ensure tmp is initialized before use).

    Linux kernel (hfsplus) tmp initialization in hfsplus_find_cat() = initialize the tmp variable
  2. Configuration

    Introduce hfsplus_brec_read_cat() wrapper that calls hfs_brec_read() to read the data and perform additional validation before returning the record.

    Linux kernel (hfsplus) use hfsplus_brec_read_cat() wrapper = hfsplus_brec_read_cat()
  3. Configuration

    For thread records, check against HFSPLUS_MIN_THREAD_SZ before reading to avoid partial reads of thread records.

    Linux kernel (hfsplus) thread record minimum size check = HFSPLUS_MIN_THREAD_SZ
  4. Configuration

    Validate the record size based on the type field when reading catalog records; return -EIO if size doesn't match the expected size for the record type being read.

    Linux kernel (hfsplus) catalog record size validation = return -EIO if size doesn't match expected

Event History

May 28, 2026
CVE Published
via MITRE·09:36 AM
Data Sourced
via MITRE·09:36 AM
Description
Data Sourced
via NVD·10:16 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-46169?

The severity of CVE-2026-46169 is rated at risk 27.

2

How do I fix CVE-2026-46169?

To fix CVE-2026-46169, update to the latest patched version of the Linux kernel that addresses this vulnerability.

3

What is the impact of CVE-2026-46169?

CVE-2026-46169 could lead to potential exposure to uninitialized memory values due to improper validation in the hfsplus file system.

4

Which software is affected by CVE-2026-46169?

The affected software is the Linux kernel specifically related to the hfsplus file system.

5

What is the root cause of CVE-2026-46169?

The root cause of CVE-2026-46169 is the lack of validation for the on-disk record size in the hfs_brec_read() function.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203