diff options
author | Benoit Sevens <bsevens@google.com> | 2024-11-07 14:22:02 +0000 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2024-11-09 13:17:42 +0100 |
commit | ecf2b43018da9579842c774b7f35dbe11b5c38dd (patch) | |
tree | 5ef530c44d6791131c1b99c7588e227acdda41cc /drivers/media | |
parent | 702a47ce6dde72f6e247b3c3c00a0fc521f9b1c6 (diff) | |
download | lwn-ecf2b43018da9579842c774b7f35dbe11b5c38dd.tar.gz lwn-ecf2b43018da9579842c774b7f35dbe11b5c38dd.zip |
media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format
This can lead to out of bounds writes since frames of this type were not
taken into account when calculating the size of the frames buffer in
uvc_parse_streaming.
Fixes: c0efd232929c ("V4L/DVB (8145a): USB Video Class driver")
Signed-off-by: Benoit Sevens <bsevens@google.com>
Cc: stable@vger.kernel.org
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/usb/uvc/uvc_driver.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index f0febdc08c2d..2bba7123ea5e 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -371,7 +371,7 @@ static int uvc_parse_format(struct uvc_device *dev, * Parse the frame descriptors. Only uncompressed, MJPEG and frame * based formats have frame descriptors. */ - while (buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE && + while (ftype && buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE && buffer[2] == ftype) { unsigned int maxIntervalIndex; |