CVE-2026-89726: lib/ucs2_string.c: fix out-of-bounds read in ucs2_strnlen()
In the Linux kernel, the following vulnerability has been resolved:
lib/ucs2string.c: fix out-of-bounds read in ucs2strnlen()
Patch series "lib/ucs2string.c: fix out-of-bounds read in ucs2strnlen()", v2.
This series fixes an off-by-one out-of-bounds read in ucs2strnlen().
The first patch is the real fix, the second patch comes as a bonus and fixes the code indentation.
This patch (of 2):
ucs2strnlen() checks the current character before checking whether the caller-provided maximum length has been reached. If the input is not NUL-terminated within that bound, the loop can read one ucs2chart past the limit.
Test the length before dereferencing to prevent an off-by-one out-of-bounds read.
Affected Software
Event History
Frequently Asked Questions
What input condition triggers the out-of-bounds read?
The issue occurs when ucs2_strnlen() receives input that is not NUL-terminated within the caller-provided maximum length. The function can then read one ucs2_char_t beyond that limit.
What is the corrective change?
The fix checks whether the maximum length has been reached before dereferencing the current character. This prevents the off-by-one read beyond the supplied bound.