Skip to content

Commit

Permalink
media: ov519: add missing endpoint sanity checks
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
jhovold authored and mchehab committed Mar 12, 2020
1 parent 8ff3cf4 commit 9989123
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 9989123

Please sign in to comment.