Commit e84749a7 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: usb-audio: Validate MS endpoint descriptors



snd_usbmidi_get_ms_info() may access beyond the border when a
malformed descriptor is passed.  This patch adds the sanity checks of
the given MS endpoint descriptors, and skips invalid ones.

Reported-by: default avatar <syzbot+6bb23a5d5548b93c94aa@syzkaller.appspotmail.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210510150659.17710-1-tiwai@suse.de


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent c1b55029
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1956,8 +1956,12 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi *umidi,
		ms_ep = find_usb_ms_endpoint_descriptor(hostep);
		if (!ms_ep)
			continue;
		if (ms_ep->bLength <= sizeof(*ms_ep))
			continue;
		if (ms_ep->bNumEmbMIDIJack > 0x10)
			continue;
		if (ms_ep->bLength < sizeof(*ms_ep) + ms_ep->bNumEmbMIDIJack)
			continue;
		if (usb_endpoint_dir_out(ep)) {
			if (endpoints[epidx].out_ep) {
				if (++epidx >= MIDI_MAX_ENDPOINTS) {