Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8aa637b

Browse files
jhovoldmchehab
authored andcommitted
media: uvcvideo: fix division by zero at stream start
Add the missing bulk-endpoint max-packet sanity check to uvc_video_start_transfer() to avoid division by zero in uvc_alloc_urb_buffers() in case a malicious device has broken descriptors (or when doing descriptor fuzz testing). Note that USB core will reject URBs submitted for endpoints with zero wMaxPacketSize but that drivers doing packet-size calculations still need to handle this (cf. commit 2548288 ("USB: Fix: Don't skip endpoint descriptors with maxpacket=0")). Fixes: c0efd23 ("V4L/DVB (8145a): USB Video Class driver") Cc: [email protected] # 2.6.26 Signed-off-by: Johan Hovold <[email protected]> Reviewed-by: Kieran Bingham <[email protected]> Signed-off-by: Laurent Pinchart <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
1 parent 4b06506 commit 8aa637b

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

drivers/media/usb/uvc/uvc_video.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,6 +1963,10 @@ static int uvc_video_start_transfer(struct uvc_streaming *stream,
19631963
if (ep == NULL)
19641964
return -EIO;
19651965

1966+
/* Reject broken descriptors. */
1967+
if (usb_endpoint_maxp(&ep->desc) == 0)
1968+
return -EIO;
1969+
19661970
ret = uvc_init_video_bulk(stream, ep, gfp_flags);
19671971
}
19681972

0 commit comments

Comments
 (0)