summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-04-14 20:17:35 +0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-04-27 20:45:35 +0200
commitf8a389db502f7b287903b209f925df5570ff5478 (patch)
tree891329c6810b8f75790545f99d1ae6fca88ae703 /drivers/media
parentV4L/DVB (5517): Usbvision: store the device database more efficiently (diff)
downloadlinux-f8a389db502f7b287903b209f925df5570ff5478.tar.xz
linux-f8a389db502f7b287903b209f925df5570ff5478.zip
V4L/DVB (5518): Fix a bug on device detection
Thanks to: Thierry MERLE <thierry.merle@free.fr> for pointing this Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media')
-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 c632f125252c..edee094cf15d 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 37d619b1e038..766accc927ef 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 aa6509391bf9..df030bf84c00 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);