High · published July 25, 2026
In the Linux kernel, the following vulnerability has been resolved:
hfs/hfsplus: fix u32 overflow in check_and_correct_requested_length
check_and_correct_requested_length() compares (off + len) against
node_size using u32 arithmetic. When the caller passes a large len
value (e.g. from an underflowed subtraction in hfs_brec_remove()),
off + len can wrap past 2^32 and produce a small result, causing the
bounds check to pass when it should fail.
For example, with off=14 and len=0xFFFFFFF2 (underflowed from
data_off - keyoffset - size in hfs_brec_remove), off + len wraps to 6,
which is less than a typical node_size of 512, so the check passes and
the subsequent memmove reads ~4GB past the node buffer.
Fix this by widening the addition to u64 before comparing against
node_size. This prevents the u32 wrap while keeping the logic
straightforward.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 5.4.297, < 5.5 | 5.5 |
| linux/linux_kernel | ≥ 5.10.241, < 5.10.261 | 5.10.261 |
| linux/linux_kernel | ≥ 5.15.190, < 5.15.212 | 5.15.212 |
| linux/linux_kernel | ≥ 6.1.149, < 6.1.178 | 6.1.178 |
| linux/linux_kernel | ≥ 6.6.103, < 6.6.145 | 6.6.145 |
| linux/linux_kernel | ≥ 6.12.43, < 6.12.97 | 6.12.97 |
| linux/linux_kernel | ≥ 6.15.11, < 6.16 | 6.16 |
| linux/linux_kernel | ≥ 6.16.2, < 6.18.40 | 6.18.40 |
| linux/linux_kernel | ≥ 6.19, < 7.1.4 | 7.1.4 |