Skip to content

Commit b4ff05c

Browse files
dlelcldkekslelenpjohnson
authored andcommitted
UPSTREAM: USB: 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: c0efd23 ("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Bug: 378455392 (cherry picked from commit ecf2b43018da9579842c774b7f35dbe11b5c38dd) Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I959a6374ba7adf021fc19da755f5c7611fef9b8c
1 parent 8e856ef commit b4ff05c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/media/usb/uvc/uvc_driver.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ static int uvc_parse_format(struct uvc_device *dev,
496496
/* Parse the frame descriptors. Only uncompressed, MJPEG and frame
497497
* based formats have frame descriptors.
498498
*/
499-
while (buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE &&
499+
while (ftype && buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE &&
500500
buffer[2] == ftype) {
501501
frame = &format->frame[format->nframes];
502502
if (ftype != UVC_VS_FRAME_FRAME_BASED)

0 commit comments

Comments
 (0)