Skip to main content
← All vulnerabilities
CVE-2026-46088

ALSA: control: Validate buf_len before strnlen() in snd_ctl_elem_init_enum_names()

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.258, 5.15.209, 6.1.175, 6.6.140, 6.12.86, and 2 more
None on Exploit-DB, Metasploit or GitHub

Summary

In the Linux kernel, the following vulnerability has been resolved: ALSA: control: Validate buf_len before strnlen() in snd_ctl_elem_init_enum_names() snd_ctl_elem_init_enum_names() advances pointer p through the names buffer while decrementing buf_len. If buf_len reaches zero but items remain, the next iteration calls strnlen(p, 0). While strnlen(p, 0) returns 0 and would hit the existing name_len == 0 error path, CONFIG_FORTIFY_SOURCE's fortified strnlen() first checks maxlen against __builtin_dynamic_object_size(). When Clang loses track of p's object size inside the loop, this triggers a BRK exception panic before the return value is examined. Add a buf_len == 0 guard at the loop entry to prevent calling fortified strnlen() on an exhausted buffer. Found by kernel fuzz testing through Xiaomi Smartphone.

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in 708f6ec9bcdf58bfd561409110baaf4fd3be4ea3; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in bfcbb4994da9e979c4bcfcf24aaaac69e457e48e; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in a470f7cabc4df72d9bd132f5719a8717292bb440; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in 1fbe46d2b72754d8bd580e13e59ccb5d3d0e8cb0; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in 8ba0214c3dd32b8ec652947e3f2bc5b8f6e6be9e; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in 654c818a69c21d2bea4e8fd9eae7da865df9a5c8; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in 82012fd3e78a14360fbc2f1a7491589896704f97; From 8d448162bda5ae3b5ecb26fe50c8fbbeae99faa4 · fixed in e0da8a8cac74f4b9f577979d131f0d2b88a84487

  • Linux Linux

    3.2

  • KernelLinux

    From 3.2.0 · fixed in 5.10.258; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.140; From 6.7.0 · fixed in 6.12.86; From 6.13.0 · fixed in 6.18.27; From 6.19.0 · fixed in 7.0.4

References 8

git.kernel.org