]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
USB: cdc-acm: more sanity checking
authorOliver Neukum <oneukum@suse.com>
Tue, 15 Mar 2016 09:14:04 +0000 (10:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Mar 2016 16:19:02 +0000 (09:19 -0700)
An attack has become available which pretends to be a quirky
device circumventing normal sanity checks and crashes the kernel
by an insufficient number of interfaces. This patch adds a check
to the code path for quirky devices.

Signed-off-by: Oliver Neukum <ONeukum@suse.com>
CC: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/cdc-acm.c

index 1d2c99af253240786ed74c65027e6c8e26d61f25..83fd30b0577c55f33eace402617ff3a2a4b09126 100644 (file)
@@ -1179,6 +1179,9 @@ static int acm_probe(struct usb_interface *intf,
        if (quirks == NO_UNION_NORMAL) {
                data_interface = usb_ifnum_to_if(usb_dev, 1);
                control_interface = usb_ifnum_to_if(usb_dev, 0);
+               /* we would crash */
+               if (!data_interface || !control_interface)
+                       return -ENODEV;
                goto skip_normal_probe;
        }