CVE-2026-80829

ALSA: usb-audio: fix OOB write in snd_usbmidi_novation_output()

State
Published
Severity
Not scored
Published
Sep 4, 2026
Updated
Oct 19, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

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

ALSA: usb-audio: fix OOB write in snd_usbmidi_novation_output()

snd_usbmidi_novation_output() lays out a two-byte header at transfer_buffer[0..1] and passes &transfer_buffer[2] together with a length of ep->max_transfer - 2 to snd_rawmidi_transmit():

count = snd_rawmidi_transmit(ep->ports[0].substream, &transfer_buffer[2], ep->max_transfer - 2);

ep->max_transfer comes from the output endpoint's wMaxPacketSize via usb_maxpacket(). A malformed or malicious device can advertise a bulk OUT endpoint with a wMaxPacketSize of 1 - the USB core only clamps this value downwards - so ep->max_transfer becomes 1 and the count argument becomes -1.

snd_rawmidi_transmit() passes the negative count on to __snd_rawmidi_transmit_peek(), where "if (count1 > count) count1 = count" leaves count1 negative; get_aligned_size() keeps it negative for a byte-stream substream, so the following memcpy(buffer, ..., count1) runs with a (size_t)-1 length and writes far past the transfer buffer, which was allocated with usb_alloc_coherent(ep->max_transfer).

This is the same class of bug that was fixed for snd_usbmidi_akai_output() in commit 0970274613fb ("ALSA: usb-audio: fix OOB write in snd_usbmidi_akai_output()"); the novation output routine was left unguarded. Bail out when the endpoint cannot hold the two-byte header plus at least one payload byte.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 558fc4485ecc704edfe7876d6cebae4738ff7ef8Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 9c8212436631b0063cb021e9f58df438e3db84d0Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before e9c00d7533f99aa9833c4b598f47e3b3202fdb9aAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 94e4562fcc81badd1d467ddfb88c27e4fae974c2Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 7639ec9755d3ec0ec8cd7c0fdd2c3d3997434870Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 91919b3b99ab7ce3d7dbb39fcf7c6c742a663c0cAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 7f00dbddb51f4f74325cdc7c3f6b19fb3392481aAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 1074c2306901b44ebcb83855583c6776e1e392eaAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 1035a8f63bae28e498b0e7b5ac91d749844a7158Affected
LinuxLinux
  • 2.6.12Affected
  • before 2.6.12Not affected
  • 5.10.269 through 5.10.*Not affected
  • 5.15.220 through 5.15.*Not affected
  • 6.1.187 through 6.1.*Not affected
  • 6.6.156 through 6.6.*Not affected
  • 6.12.108 through 6.12.*Not affected
  • 6.18.49 through 6.18.*Not affected
  • 7.1.13 through 7.1.*Not affected
  • 7.2.3 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.