diff options
| author | Johan Hovold <johan@kernel.org> | 2017-03-06 17:36:41 +0100 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2017-06-17 15:53:05 +0200 |
| commit | 74c12dc5eca262352e17c1c90a00d755c3a19176 (patch) | |
| tree | 7b35594aa5ad62e8f0bd582072a207174fa55820 | |
| parent | 871b3ad6c3b42b721bd1416ac3341f7542f9f5bf (diff) | |
| download | android_kernel_m2note-74c12dc5eca262352e17c1c90a00d755c3a19176.tar.gz | |
USB: serial: safe_serial: fix information leak in completion handler
commit 8c76d7cd520ebffc1ea9ea0850d87a224a50c7f2 upstream.
Add missing sanity check to the bulk-in completion handler to avoid an
integer underflow that could be triggered by a malicious device.
This avoids leaking up to 56 bytes from after the URB transfer buffer to
user space.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
| -rw-r--r-- | drivers/usb/serial/safe_serial.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c index 21cd7bf2a..8e24f8ff2 100644 --- a/drivers/usb/serial/safe_serial.c +++ b/drivers/usb/serial/safe_serial.c @@ -215,6 +215,11 @@ static void safe_process_read_urb(struct urb *urb) if (!safe) goto out; + if (length < 2) { + dev_err(&port->dev, "malformed packet\n"); + return; + } + fcs = fcs_compute10(data, length, CRC10_INITFCS); if (fcs) { dev_err(&port->dev, "%s - bad CRC %x\n", __func__, fcs); |
