42 lines
1.3 KiB
Diff
42 lines
1.3 KiB
Diff
From 7c80f9e4a588f1925b07134bb2e3689335f6c6d8 Mon Sep 17 00:00:00 2001
|
|
From: Alan Stern <stern@rowland.harvard.edu>
|
|
Date: Fri, 29 Sep 2017 10:54:24 -0400
|
|
Subject: [PATCH] usb: usbtest: fix NULL pointer dereference
|
|
|
|
If the usbtest driver encounters a device with an IN bulk endpoint but
|
|
no OUT bulk endpoint, it will try to dereference a NULL pointer
|
|
(out->desc.bEndpointAddress). The problem can be solved by adding a
|
|
missing test.
|
|
|
|
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
|
|
Reported-by: Andrey Konovalov <andreyknvl@google.com>
|
|
Tested-by: Andrey Konovalov <andreyknvl@google.com>
|
|
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
|
---
|
|
drivers/usb/misc/usbtest.c | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
|
|
index 113e38bfe0ef..b3fc602b2e24 100644
|
|
--- a/drivers/usb/misc/usbtest.c
|
|
+++ b/drivers/usb/misc/usbtest.c
|
|
@@ -202,12 +202,13 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
|
|
return tmp;
|
|
}
|
|
|
|
- if (in) {
|
|
+ if (in)
|
|
dev->in_pipe = usb_rcvbulkpipe(udev,
|
|
in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
|
|
+ if (out)
|
|
dev->out_pipe = usb_sndbulkpipe(udev,
|
|
out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
|
|
- }
|
|
+
|
|
if (iso_in) {
|
|
dev->iso_in = &iso_in->desc;
|
|
dev->in_iso_pipe = usb_rcvisocpipe(udev,
|
|
--
|
|
2.13.6
|
|
|