aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Neukum <oneukum@suse.com>2015-10-27 07:51:34 -0400
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-11-17 11:56:31 -0500
commit588afcc1c0e45358159090d95bf7b246fb67565f (patch)
treece527d3f473b71cd398912d3876acc1ae4350bfc
parent3ff863b87e8aacef96d66b132b43e296bb8cd973 (diff)
[media] usbvision fix overflow of interfaces array
This fixes the crash reported in: http://seclists.org/bugtraq/2015/Oct/35 The interface number needs a sanity check. Signed-off-by: Oliver Neukum <oneukum@suse.com> Cc: Vladis Dronov <vdronov@redhat.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/usb/usbvision/usbvision-video.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/media/usb/usbvision/usbvision-video.c b/drivers/media/usb/usbvision/usbvision-video.c
index 4aa46caf7e22..3089d640c82d 100644
--- a/drivers/media/usb/usbvision/usbvision-video.c
+++ b/drivers/media/usb/usbvision/usbvision-video.c
@@ -1461,6 +1461,13 @@ static int usbvision_probe(struct usb_interface *intf,
1461 printk(KERN_INFO "%s: %s found\n", __func__, 1461 printk(KERN_INFO "%s: %s found\n", __func__,
1462 usbvision_device_data[model].model_string); 1462 usbvision_device_data[model].model_string);
1463 1463
1464 /*
1465 * this is a security check.
1466 * an exploit using an incorrect bInterfaceNumber is known
1467 */
1468 if (ifnum >= USB_MAXINTERFACES || !dev->actconfig->interface[ifnum])
1469 return -ENODEV;
1470
1464 if (usbvision_device_data[model].interface >= 0) 1471 if (usbvision_device_data[model].interface >= 0)
1465 interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0]; 1472 interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0];
1466 else 1473 else