watchdog: pcwd_usb: fix NULL-deref at probe
authorJohan Hovold <johan@kernel.org>
Mon, 13 Mar 2017 12:49:45 +0000 (13:49 +0100)
committerSasha Levin <alexander.levin@verizon.com>
Thu, 8 Jun 2017 10:12:47 +0000 (06:12 -0400)
[ Upstream commit 46c319b848268dab3f0e7c4a5b6e9146d3bca8a4 ]

Make sure to check the number of endpoints to avoid dereferencing a
NULL-pointer should a malicious device lack endpoints.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
drivers/watchdog/pcwd_usb.c

index 1a11aedc4fe850738bfe17d469232da64959b84d..9eb5b314ba06d4ce3c9078b60771a2fc1ca03cde 100644 (file)
@@ -630,6 +630,9 @@ static int usb_pcwd_probe(struct usb_interface *interface,
                return -ENODEV;
        }
 
+       if (iface_desc->desc.bNumEndpoints < 1)
+               return -ENODEV;
+
        /* check out the endpoint: it has to be Interrupt & IN */
        endpoint = &iface_desc->endpoint[0].desc;