Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-80829

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

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 558fc4485ecc704edfe7876d6cebae4738ff7ef8affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 9c8212436631b0063cb021e9f58df438e3db84d0affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < e9c00d7533f99aa9833c4b598f47e3b3202fdb9aaffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 94e4562fcc81badd1d467ddfb88c27e4fae974c2affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 7639ec9755d3ec0ec8cd7c0fdd2c3d3997434870affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 91919b3b99ab7ce3d7dbb39fcf7c6c742a663c0caffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 7f00dbddb51f4f74325cdc7c3f6b19fb3392481aaffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 1074c2306901b44ebcb83855583c6776e1e392eaaffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 1035a8f63bae28e498b0e7b5ac91d749844a7158affected

Linux Linux

Default version status: affected

  • 2.6.12affected
  • 0 to < 2.6.12unaffected
  • 5.10.269 to ≤ 5.10.*unaffected
  • 5.15.220 to ≤ 5.15.*unaffected
  • 6.1.187 to ≤ 6.1.*unaffected
  • 6.6.156 to ≤ 6.6.*unaffected
  • 6.12.108 to ≤ 6.12.*unaffected
  • 6.18.49 to ≤ 6.18.*unaffected
  • 7.1.13 to ≤ 7.1.*unaffected
  • 7.2.3 to ≤ 7.2.*unaffected
  • 7.3 to ≤ *unaffected

References