On Tue, Apr 16, 2019 at 01:26:45PM +0200, Johan Hovold wrote: > On Thu, Apr 11, 2019 at 12:54:12PM +0800, Young Xiao wrote: > > From: Young Xiao <YangX92@xxxxxxxxxxx> > > > > The driver expects at least one valid endpoint. If given > > malicious descriptors that specify 0 for the number of endpoints, > > it will crash in the probe function. Ensure there is at least > > one endpoint on the interface before using it. > > Why do claim it will crash? Ok, I see now that Björn already pointed this out to you in your updated version of this patch. > > This vulnerability is same as CVE-2016-2188. > > Note that the "fix" for this CVE that you're now copying was incomplete. > Here's the proper fix: > > b7321e81fc36 ("USB: iowarrior: fix NULL-deref at probe") > > > Signed-off-by: Young Xiao <YangX92@xxxxxxxxxxx> > > --- > > drivers/media/usb/s2255/s2255drv.c | 7 +++++++ > > drivers/media/usb/stkwebcam/stk-webcam.c | 6 ++++++ > > 2 files changed, 13 insertions(+) > > > > diff --git a/drivers/media/usb/s2255/s2255drv.c b/drivers/media/usb/s2255/s2255drv.c > > index 5b3e54b..7fdf159 100644 > > --- a/drivers/media/usb/s2255/s2255drv.c > > +++ b/drivers/media/usb/s2255/s2255drv.c > > @@ -2263,6 +2263,13 @@ static int s2255_probe(struct usb_interface *interface, > > iface_desc = interface->cur_altsetting; > > dev_dbg(&interface->dev, "num EP: %d\n", > > iface_desc->desc.bNumEndpoints); > > + > > + if (iface_desc->desc.bNumEndpoints < 1) { > > + dev_err(&interface->dev, "Invalid number of endpoints\n"); > > + retval = -EINVAL; > > + goto error; > > + } > > + > > for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { > > Besides that you didn't even bother compile-testing this, there is no > bug here to fix to begin with. > > If bNumEndpoints is zero this loop will execute and the driver bails out > just after since dev->read_endpoint is NULL. That was meant to read "will never execute". Johan