summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorBenoit Sevens <bsevens@google.com>2024-11-07 14:22:02 +0000
committerHans Verkuil <hverkuil@xs4all.nl>2024-11-09 13:17:42 +0100
commitecf2b43018da9579842c774b7f35dbe11b5c38dd (patch)
tree5ef530c44d6791131c1b99c7588e227acdda41cc /drivers/media
parent702a47ce6dde72f6e247b3c3c00a0fc521f9b1c6 (diff)
downloadlwn-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.c2
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;