mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
ALSA: usb-audio: Fix incorrect size check for processing/extension units
commit976a68f06bupstream. The recently introduced unit descriptor validation had some bug for processing and extension units, it counts a bControlSize byte twice so it expected a bigger size than it should have been. This seems resulting in a probe error on a few devices. Fix the calculation for proper checks of PU and EU. Fixes:57f8770620("ALSA: usb-audio: More validations of descriptor units") Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20191114165613.7422-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
420433f6cf
commit
f246552686
|
|
@ -81,9 +81,9 @@ static bool validate_processing_unit(const void *p,
|
|||
switch (v->protocol) {
|
||||
case UAC_VERSION_1:
|
||||
default:
|
||||
/* bNrChannels, wChannelConfig, iChannelNames, bControlSize */
|
||||
len += 1 + 2 + 1 + 1;
|
||||
if (d->bLength < len) /* bControlSize */
|
||||
/* bNrChannels, wChannelConfig, iChannelNames */
|
||||
len += 1 + 2 + 1;
|
||||
if (d->bLength < len + 1) /* bControlSize */
|
||||
return false;
|
||||
m = hdr[len];
|
||||
len += 1 + m + 1; /* bControlSize, bmControls, iProcessing */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user