41 lines
1.2 KiB
Diff
41 lines
1.2 KiB
Diff
From b0bb5691b38e2f439b071e226bad9f699c33b77d Mon Sep 17 00:00:00 2001
|
|
From: Takashi Iwai <tiwai@suse.de>
|
|
Date: Tue, 15 Mar 2016 12:09:10 +0100
|
|
Subject: [PATCH 1/2] ALSA: usb-audio: Fix NULL dereference in
|
|
create_fixed_stream_quirk()
|
|
|
|
create_fixed_stream_quirk() may cause a NULL-pointer dereference by
|
|
accessing the non-existing endpoint when a USB device with a malformed
|
|
USB descriptor is used.
|
|
|
|
This patch avoids it simply by adding a sanity check of bNumEndpoints
|
|
before the accesses.
|
|
|
|
Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=971125
|
|
Cc: <stable@vger.kernel.org>
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
---
|
|
sound/usb/quirks.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
|
|
index eef9b8e4b949..e128ca62eb44 100644
|
|
--- a/sound/usb/quirks.c
|
|
+++ b/sound/usb/quirks.c
|
|
@@ -177,6 +177,12 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,
|
|
}
|
|
alts = &iface->altsetting[fp->altset_idx];
|
|
altsd = get_iface_desc(alts);
|
|
+ if (altsd->bNumEndpoints < 1) {
|
|
+ kfree(fp);
|
|
+ kfree(rate_table);
|
|
+ return -EINVAL;
|
|
+ }
|
|
+
|
|
fp->protocol = altsd->bInterfaceProtocol;
|
|
|
|
if (fp->datainterval == 0)
|
|
--
|
|
2.5.0
|
|
|