From 04348eaa4874e6b8b39d6354bbfd86ca58bc4ffc Mon Sep 17 00:00:00 2001 From: Brett Mastbergen Date: Fri, 7 Feb 2025 12:06:07 -0500 Subject: [PATCH] media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format jira VULN-9661 cve CVE-2024-53104 commit-author Benoit Sevens commit ecf2b43018da9579842c774b7f35dbe11b5c38dd 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 Cc: stable@vger.kernel.org Acked-by: Greg Kroah-Hartman Reviewed-by: Laurent Pinchart Signed-off-by: Hans Verkuil (cherry picked from commit ecf2b43018da9579842c774b7f35dbe11b5c38dd) Signed-off-by: Brett Mastbergen --- drivers/media/usb/uvc/uvc_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index d3c024626a226..4cdbafe37a8e2 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -436,7 +436,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) { frame = &format->frame[format->nframes]; if (ftype != UVC_VS_FRAME_FRAME_BASED)