summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/ivtv/ivtv-ioctl.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2008-04-20 11:27:36 +0000
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-20 11:27:36 +0000
commitab54691733e5cb5139269a2f68e0beefa5939d1b (patch)
tree744e602ff071c9074c320724842c44dcfb89e030 /linux/drivers/media/video/ivtv/ivtv-ioctl.c
parent52e1a0cb22cc2caac3faa63d0e7e0039791816a4 (diff)
downloadmediapointer-dvb-s2-ab54691733e5cb5139269a2f68e0beefa5939d1b.tar.gz
mediapointer-dvb-s2-ab54691733e5cb5139269a2f68e0beefa5939d1b.tar.bz2
Fix VIDIOCGAP corruption in ivtv
From: Alan Cox <alan@lxorguk.ukuu.org.uk> Frank Bennett reported that ivtv was causing skype to crash. With help from one of their developers he showed it was a kernel problem. VIDIOCGCAP copies a name into a fixed length buffer - ivtv uses names that are too long and does not truncate them so corrupts a few bytes of the app data area. Possibly the names also want trimming but for now this should fix the corruption case. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Reviewed-by: <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/video/ivtv/ivtv-ioctl.c')
-rw-r--r--linux/drivers/media/video/ivtv/ivtv-ioctl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/linux/drivers/media/video/ivtv/ivtv-ioctl.c b/linux/drivers/media/video/ivtv/ivtv-ioctl.c
index a5da513d6..b94d1873d 100644
--- a/linux/drivers/media/video/ivtv/ivtv-ioctl.c
+++ b/linux/drivers/media/video/ivtv/ivtv-ioctl.c
@@ -748,7 +748,8 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void
memset(vcap, 0, sizeof(*vcap));
strcpy(vcap->driver, IVTV_DRIVER_NAME); /* driver name */
- strcpy(vcap->card, itv->card_name); /* card type */
+ strncpy(vcap->card, itv->card_name,
+ sizeof(vcap->card)-1); /* card type */
strcpy(vcap->bus_info, pci_name(itv->dev)); /* bus info... */
vcap->version = IVTV_DRIVER_VERSION; /* version */
vcap->capabilities = itv->v4l2_cap; /* capabilities */