Skip to content

Commit

Permalink
media: ov519: add missing endpoint sanity checks
Browse files Browse the repository at this point in the history
commit 9989123 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: 1876bb9 ("V4L/DVB (12079): gspca_ov519: add support for the ov511 bridge")
Fixes: b282d87 ("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>
  • Loading branch information
Johan Hovold authored and Greg Kroah-Hartman committed Apr 1, 2020
1 parent bd02d91 commit 0d16043
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/media/usb/gspca/ov519.c
Original file line number Diff line number Diff line change
Expand Up @@ -3477,6 +3477,11 @@ static void ov511_mode_init_regs(struct sd *sd)
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);

Expand Down Expand Up @@ -3603,6 +3608,11 @@ static void ov518_mode_init_regs(struct sd *sd)
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);

Expand Down

0 comments on commit 0d16043

Please sign in to comment.