summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/usbvision/usbvision-cards.c1
-rw-r--r--drivers/media/video/usbvision/usbvision-cards.h2
-rw-r--r--drivers/media/video/usbvision/usbvision-video.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/media/video/usbvision/usbvision-cards.c b/drivers/media/video/usbvision/usbvision-cards.c
index c632f125252..edee094cf15 100644
--- a/drivers/media/video/usbvision/usbvision-cards.c
+++ b/drivers/media/video/usbvision/usbvision-cards.c
@@ -1027,6 +1027,7 @@ struct usbvision_device_data_st usbvision_device_data[] = {
.ModelString = "Hauppauge WinTv-USB",
},
};
+const int usbvision_device_data_size=ARRAY_SIZE(usbvision_device_data);
/* Supported Devices */
diff --git a/drivers/media/video/usbvision/usbvision-cards.h b/drivers/media/video/usbvision/usbvision-cards.h
index 37d619b1e03..766accc927e 100644
--- a/drivers/media/video/usbvision/usbvision-cards.h
+++ b/drivers/media/video/usbvision/usbvision-cards.h
@@ -63,3 +63,5 @@
#define PINNA_LINX_VD_IN_CAB_PAL 62
#define PINNA_PCTV_BUNGEE_PAL_FM 63
#define HPG_WINTV 64
+
+extern const int usbvision_device_data_size;
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
index aa6509391bf..df030bf84c0 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -1792,6 +1792,10 @@ static int __devinit usbvision_probe(struct usb_interface *intf,
dev->descriptor.idProduct, ifnum);
model = devid->driver_info;
+ if ( (model<0) || (model>=usbvision_device_data_size) ) {
+ printk(KERN_INFO "model out of bounds %d\n",model);
+ return -ENODEV;
+ }
printk(KERN_INFO "%s: %s found\n", __FUNCTION__,
usbvision_device_data[model].ModelString);