Browse Source

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>
Mauro Carvalho Chehab 18 years ago
parent
commit
f8a389db50

+ 1 - 0
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 */
 

+ 2 - 0
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;

+ 4 - 0
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);