| From 998912346c0da53a6dbb71fab3a138586b596b30 Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Fri, 3 Jan 2020 17:35:09 +0100 |
| Subject: media: ov519: add missing endpoint sanity checks |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| commit 998912346c0da53a6dbb71fab3a138586b596b30 upstream. |
| |
| Make sure to check that we have at least one endpoint before accessing |
| the endpoint array to avoid dereferencing a NULL-pointer on stream |
| start. |
| |
| Note that these sanity checks are not redundant as the driver is mixing |
| looking up altsettings by index and by number, which need not coincide. |
| |
| Fixes: 1876bb923c98 ("V4L/DVB (12079): gspca_ov519: add support for the ov511 bridge") |
| Fixes: b282d87332f5 ("V4L/DVB (12080): gspca_ov519: Fix ov518+ with OV7620AE (Trust spacecam 320)") |
| Cc: stable <stable@vger.kernel.org> # 2.6.31 |
| Cc: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/media/usb/gspca/ov519.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| --- a/drivers/media/usb/gspca/ov519.c |
| +++ b/drivers/media/usb/gspca/ov519.c |
| @@ -3482,6 +3482,11 @@ static void ov511_mode_init_regs(struct |
| return; |
| } |
| |
| + if (alt->desc.bNumEndpoints < 1) { |
| + sd->gspca_dev.usb_err = -ENODEV; |
| + return; |
| + } |
| + |
| packet_size = le16_to_cpu(alt->endpoint[0].desc.wMaxPacketSize); |
| reg_w(sd, R51x_FIFO_PSIZE, packet_size >> 5); |
| |
| @@ -3607,6 +3612,11 @@ static void ov518_mode_init_regs(struct |
| return; |
| } |
| |
| + if (alt->desc.bNumEndpoints < 1) { |
| + sd->gspca_dev.usb_err = -ENODEV; |
| + return; |
| + } |
| + |
| packet_size = le16_to_cpu(alt->endpoint[0].desc.wMaxPacketSize); |
| ov518_reg_w32(sd, R51x_FIFO_PSIZE, packet_size & ~7, 2); |
| |