2009-04-07 23:12:16

by Németh Márton

[permalink] [raw]
Subject: [PATCH] uvcvideo: prevent invormation loss with removing implicit casting

From: Márton Németh <[email protected]>

The uvcvideo driver supports only one input, which is input 0. For all
other input index the return value shall be EINVAL. This patch fixes the
problem when the value 0x80000000 was incorrectly casted and treated as
a zero value.

The patch was tested with v4l-test 0.10 [2] with CNF7129 webcam found on
EeePC 901.

References:
[1] V4L2 API specification, revision 0.24
http://v4l2spec.bytesex.org/spec/r11217.htm

[2] v4l-test: Test environment for Video For Linux Two API
http://v4l-test.sourceforge.net/

Signed-off-by: Márton Németh <[email protected]>
---
--- linux-2.6.29-git13/drivers/media/video/uvc/uvc_v4l2.c.orig 2009-04-06 23:16:06.000000000 +0200
+++ linux-2.6.29-git13/drivers/media/video/uvc/uvc_v4l2.c 2009-04-08 00:37:01.000000000 +0200
@@ -648,7 +648,7 @@ static long uvc_v4l2_do_ioctl(struct fil

case VIDIOC_S_INPUT:
{
- u8 input = *(u32 *)arg + 1;
+ u32 input = *(u32 *)arg + 1;

if ((ret = uvc_acquire_privileges(handle)) < 0)
return ret;


2009-04-14 15:06:11

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] uvcvideo: prevent invormation loss with removing implicit casting

On Wednesday 08 April 2009 01:11:53 Németh Márton wrote:
> From: Márton Németh <[email protected]>
>
> The uvcvideo driver supports only one input, which is input 0. For all
> other input index the return value shall be EINVAL. This patch fixes the
> problem when the value 0x80000000 was incorrectly casted and treated as
> a zero value.
>
> The patch was tested with v4l-test 0.10 [2] with CNF7129 webcam found on
> EeePC 901.
>
> References:
> [1] V4L2 API specification, revision 0.24
> http://v4l2spec.bytesex.org/spec/r11217.htm
>
> [2] v4l-test: Test environment for Video For Linux Two API
> http://v4l-test.sourceforge.net/
>
> Signed-off-by: Márton Németh <[email protected]>

Acked-by: Laurent Pinchart <[email protected]>

> ---
> --- linux-2.6.29-git13/drivers/media/video/uvc/uvc_v4l2.c.orig 2009-04-06
> 23:16:06.000000000 +0200 +++
> linux-2.6.29-git13/drivers/media/video/uvc/uvc_v4l2.c 2009-04-08
> 00:37:01.000000000 +0200 @@ -648,7 +648,7 @@ static long
> uvc_v4l2_do_ioctl(struct fil
>
> case VIDIOC_S_INPUT:
> {
> - u8 input = *(u32 *)arg + 1;
> + u32 input = *(u32 *)arg + 1;
>
> if ((ret = uvc_acquire_privileges(handle)) < 0)
> return ret;