diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2008-04-20 10:27:36 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:50 -0400 |
commit | d2b213f7b76f187c4391079c7581d3a08b940133 (patch) | |
tree | 7886d8e55e636dbfd7819bcbc4ff03a3489e91b0 | |
parent | 867e835f4db4eba6d49072382cc05fc210c4ed1c (diff) |
V4L/DVB (7729): Fix VIDIOCGAP corruption in ivtv
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>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/video/ivtv/ivtv-ioctl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c index 90f59c4155ae..15cac1812122 100644 --- a/drivers/media/video/ivtv/ivtv-ioctl.c +++ b/drivers/media/video/ivtv/ivtv-ioctl.c | |||
@@ -742,7 +742,8 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void | |||
742 | 742 | ||
743 | memset(vcap, 0, sizeof(*vcap)); | 743 | memset(vcap, 0, sizeof(*vcap)); |
744 | strcpy(vcap->driver, IVTV_DRIVER_NAME); /* driver name */ | 744 | strcpy(vcap->driver, IVTV_DRIVER_NAME); /* driver name */ |
745 | strcpy(vcap->card, itv->card_name); /* card type */ | 745 | strncpy(vcap->card, itv->card_name, |
746 | sizeof(vcap->card)-1); /* card type */ | ||
746 | strcpy(vcap->bus_info, pci_name(itv->dev)); /* bus info... */ | 747 | strcpy(vcap->bus_info, pci_name(itv->dev)); /* bus info... */ |
747 | vcap->version = IVTV_DRIVER_VERSION; /* version */ | 748 | vcap->version = IVTV_DRIVER_VERSION; /* version */ |
748 | vcap->capabilities = itv->v4l2_cap; /* capabilities */ | 749 | vcap->capabilities = itv->v4l2_cap; /* capabilities */ |