| 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: usb: usbtest: fix NULL pointer dereference |
| |
| From: Alan Stern <stern@rowland.harvard.edu> |
| |
| commit 7c80f9e4a588f1925b07134bb2e3689335f6c6d8 upstream. |
| |
| 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> |
| Cc: Ben Hutchings <ben.hutchings@codethink.co.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/misc/usbtest.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/usb/misc/usbtest.c |
| +++ b/drivers/usb/misc/usbtest.c |
| @@ -209,12 +209,13 @@ found: |
| 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, |