]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format
authorBenoit Sevens <bsevens@google.com>
Thu, 7 Nov 2024 14:22:02 +0000 (14:22 +0000)
committerHans Verkuil <hverkuil@xs4all.nl>
Sat, 9 Nov 2024 12:17:42 +0000 (13:17 +0100)
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>
drivers/media/usb/uvc/uvc_driver.c

index f0febdc08c2d65208fca266c5d8d6b7c73394e77..2bba7123ea5e98ac9e2079b9d216648d5e4c83e2 100644 (file)
@@ -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;