diff mbox series

ALSA: usb-audio: ensure that cluster header size is enough

Message ID 20180922133831.GA6792@mwanda (mailing list archive)
State New, archived
Headers show
Series ALSA: usb-audio: ensure that cluster header size is enough | expand

Commit Message

Dan Carpenter Sept. 22, 2018, 1:38 p.m. UTC
I think we need a check to make sure that "hc_header.wLength" is large
enough for a struct struct uac3_cluster_header_descriptor.

Fixes: 9a2fe9b801f5 ("ALSA: usb: initial USB Audio Device Class 3.0 support")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Comments

Sergei Shtylyov Sept. 22, 2018, 5:13 p.m. UTC | #1
Hello!

On 09/22/2018 04:38 PM, Dan Carpenter wrote:

> I think we need a check to make sure that "hc_header.wLength" is large
> enough for a struct struct uac3_cluster_header_descriptor.

   struct struct? :-)

> Fixes: 9a2fe9b801f5 ("ALSA: usb: initial USB Audio Device Class 3.0 support")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

[...]

MBR, Sergei
diff mbox series

Patch

diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index 67cf849aa16b..f7179ce39a19 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -968,6 +968,12 @@  snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip,
 	 * and request Cluster Descriptor
 	 */
 	wLength = le16_to_cpu(hc_header.wLength);
+	if (wLength < sizeof(*cluster)) {
+		dev_err(&dev->dev,
+			"%u:%d : cluster header size too small %d\n",
+			iface_no, altno, wLength);
+		return ERR_PTR(-EIO);
+	}
 	cluster = kzalloc(wLength, GFP_KERNEL);
 	if (!cluster)
 		return ERR_PTR(-ENOMEM);