Input: pegasus_notetaker - fix endpoint sanity check
authorJohan Hovold <johan@kernel.org>
Fri, 10 Jan 2020 19:55:47 +0000 (11:55 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jan 2020 15:45:29 +0000 (16:45 +0100)
commit bcfcb7f9b480dd0be8f0df2df17340ca92a03b98 upstream.

The driver was checking the number of endpoints of the first alternate
setting instead of the current one, something which could be used by a
malicious device (or USB descriptor fuzzer) to trigger a NULL-pointer
dereference.

Fixes: 1afca2b66aac ("Input: add Pegasus Notetaker tablet driver")
Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: Martin Kepplinger <martink@posteo.de>
Acked-by: Vladis Dronov <vdronov@redhat.com>
Link: https://lore.kernel.org/r/20191210113737.4016-2-johan@kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/input/tablet/pegasus_notetaker.c

index a1f3a0c..38f0874 100644 (file)
@@ -275,7 +275,7 @@ static int pegasus_probe(struct usb_interface *intf,
                return -ENODEV;
 
        /* Sanity check that the device has an endpoint */
-       if (intf->altsetting[0].desc.bNumEndpoints < 1) {
+       if (intf->cur_altsetting->desc.bNumEndpoints < 1) {
                dev_err(&intf->dev, "Invalid number of endpoints\n");
                return -EINVAL;
        }