diff options
author | Oliver Neukum <oneukum@suse.com> | 2016-03-17 17:00:17 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2016-03-17 17:16:57 -0400 |
commit | a0ad220c96692eda76b2e3fd7279f3dcd1d8a8ff (patch) | |
tree | 190098d9c8a1bbde8aa240df197ac02e2a1bf732 | |
parent | 9aa40426a4a23dfd9ca4c1c0f777b8c57e5070fd (diff) |
Input: ims-pcu - sanity check against missing interfaces
A malicious device missing interface can make the driver oops.
Add sanity checking.
Signed-off-by: Oliver Neukum <ONeukum@suse.com>
CC: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/misc/ims-pcu.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c index ac1fa5f44580..9c0ea36913b4 100644 --- a/drivers/input/misc/ims-pcu.c +++ b/drivers/input/misc/ims-pcu.c | |||
@@ -1663,6 +1663,8 @@ static int ims_pcu_parse_cdc_data(struct usb_interface *intf, struct ims_pcu *pc | |||
1663 | 1663 | ||
1664 | pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev, | 1664 | pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev, |
1665 | union_desc->bMasterInterface0); | 1665 | union_desc->bMasterInterface0); |
1666 | if (!pcu->ctrl_intf) | ||
1667 | return -EINVAL; | ||
1666 | 1668 | ||
1667 | alt = pcu->ctrl_intf->cur_altsetting; | 1669 | alt = pcu->ctrl_intf->cur_altsetting; |
1668 | pcu->ep_ctrl = &alt->endpoint[0].desc; | 1670 | pcu->ep_ctrl = &alt->endpoint[0].desc; |
@@ -1670,6 +1672,8 @@ static int ims_pcu_parse_cdc_data(struct usb_interface *intf, struct ims_pcu *pc | |||
1670 | 1672 | ||
1671 | pcu->data_intf = usb_ifnum_to_if(pcu->udev, | 1673 | pcu->data_intf = usb_ifnum_to_if(pcu->udev, |
1672 | union_desc->bSlaveInterface0); | 1674 | union_desc->bSlaveInterface0); |
1675 | if (!pcu->data_intf) | ||
1676 | return -EINVAL; | ||
1673 | 1677 | ||
1674 | alt = pcu->data_intf->cur_altsetting; | 1678 | alt = pcu->data_intf->cur_altsetting; |
1675 | if (alt->desc.bNumEndpoints != 2) { | 1679 | if (alt->desc.bNumEndpoints != 2) { |