[PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map

Ricardo Ribalda posted 19 patches 1 year, 2 months ago
There is a newer version of this series
[PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
Posted by Ricardo Ribalda 1 year, 2 months ago
Do not process unknown data types.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/media/usb/uvc/uvc_v4l2.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index 5000c74271e0..4c88dab15554 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -106,6 +106,12 @@ static int uvc_ioctl_xu_ctrl_map(struct uvc_video_chain *chain,
 	struct uvc_control_mapping *map;
 	int ret;
 
+	if (xmap->data_type > UVC_CTRL_DATA_TYPE_BITMASK) {
+		uvc_dbg(chain->dev, CONTROL,
+			"Unsupported UVC data type %u\n", xmap->data_type);
+		return -ENOTTY;
+	}
+
 	map = kzalloc(sizeof(*map), GFP_KERNEL);
 	if (map == NULL)
 		return -ENOMEM;

-- 
2.47.0.338.g60cca15819-goog
Re: [PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
Posted by Hans de Goede 1 year, 2 months ago
Hi,

On 14-Nov-24 8:10 PM, Ricardo Ribalda wrote:
> Do not process unknown data types.
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/usb/uvc/uvc_v4l2.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> index 5000c74271e0..4c88dab15554 100644
> --- a/drivers/media/usb/uvc/uvc_v4l2.c
> +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> @@ -106,6 +106,12 @@ static int uvc_ioctl_xu_ctrl_map(struct uvc_video_chain *chain,
>  	struct uvc_control_mapping *map;
>  	int ret;
>  
> +	if (xmap->data_type > UVC_CTRL_DATA_TYPE_BITMASK) {
> +		uvc_dbg(chain->dev, CONTROL,
> +			"Unsupported UVC data type %u\n", xmap->data_type);
> +		return -ENOTTY;

This seems like a textbook case for -EINVAL ?

Otherwise patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans



> +	}
> +
>  	map = kzalloc(sizeof(*map), GFP_KERNEL);
>  	if (map == NULL)
>  		return -ENOMEM;
>
Re: [PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
Posted by Ricardo Ribalda 1 year, 2 months ago
On Mon, 9 Dec 2024 at 15:12, Hans de Goede <hdegoede@redhat.com> wrote:
>
> Hi,
>
> On 14-Nov-24 8:10 PM, Ricardo Ribalda wrote:
> > Do not process unknown data types.
> >
> > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > ---
> >  drivers/media/usb/uvc/uvc_v4l2.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> > index 5000c74271e0..4c88dab15554 100644
> > --- a/drivers/media/usb/uvc/uvc_v4l2.c
> > +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> > @@ -106,6 +106,12 @@ static int uvc_ioctl_xu_ctrl_map(struct uvc_video_chain *chain,
> >       struct uvc_control_mapping *map;
> >       int ret;
> >
> > +     if (xmap->data_type > UVC_CTRL_DATA_TYPE_BITMASK) {
> > +             uvc_dbg(chain->dev, CONTROL,
> > +                     "Unsupported UVC data type %u\n", xmap->data_type);
> > +             return -ENOTTY;
>
> This seems like a textbook case for -EINVAL ?

Indeed, :) https://lore.kernel.org/linux-media/8258ce59-cd06-46ba-b275-97eb9ae4d64c@redhat.com/T/#m2d38a4cf184ad3e4ea335e92ea74258d1da267c1

Thanks!

>
> Otherwise patch looks good to me:
>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>
> Regards,
>
> Hans
>
>
>
> > +     }
> > +
> >       map = kzalloc(sizeof(*map), GFP_KERNEL);
> >       if (map == NULL)
> >               return -ENOMEM;
> >
>


--
Ricardo Ribalda
Re: [PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
Posted by Ricardo Ribalda 1 year, 2 months ago
On Thu, 14 Nov 2024 at 20:11, Ricardo Ribalda <ribalda@chromium.org> wrote:
>
> Do not process unknown data types.
>
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/usb/uvc/uvc_v4l2.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> index 5000c74271e0..4c88dab15554 100644
> --- a/drivers/media/usb/uvc/uvc_v4l2.c
> +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> @@ -106,6 +106,12 @@ static int uvc_ioctl_xu_ctrl_map(struct uvc_video_chain *chain,
>         struct uvc_control_mapping *map;
>         int ret;
>
> +       if (xmap->data_type > UVC_CTRL_DATA_TYPE_BITMASK) {
> +               uvc_dbg(chain->dev, CONTROL,
> +                       "Unsupported UVC data type %u\n", xmap->data_type);
> +               return -ENOTTY;
This should probably be -EINVAL

I am fixing it on the next version

> +       }
> +
>         map = kzalloc(sizeof(*map), GFP_KERNEL);
>         if (map == NULL)
>                 return -ENOMEM;
>
> --
> 2.47.0.338.g60cca15819-goog
>


-- 
Ricardo Ribalda