From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Andrey Konovalov <andreyknvl@google.com>,
Alan Stern <stern@rowland.harvard.edu>
Subject: [PATCH 3.18 02/20] USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor()
Date: Tue, 24 Oct 2017 14:57:29 +0200 [thread overview]
Message-ID: <20171024125651.991852899@linuxfoundation.org> (raw)
In-Reply-To: <20171024125651.887979850@linuxfoundation.org>
3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit 1c0edc3633b56000e18d82fc241e3995ca18a69e upstream.
Andrey used the syzkaller fuzzer to find an out-of-bounds memory
access in usb_get_bos_descriptor(). The code wasn't checking that the
next usb_dev_cap_header structure could fit into the remaining buffer
space.
This patch fixes the error and also reduces the bNumDeviceCaps field
in the header to match the actual number of capabilities found, in
cases where there are fewer than expected.
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/config.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/usb/core/config.c
+++ b/drivers/usb/core/config.c
@@ -855,10 +855,12 @@ int usb_get_bos_descriptor(struct usb_de
for (i = 0; i < num; i++) {
buffer += length;
cap = (struct usb_dev_cap_header *)buffer;
- length = cap->bLength;
- if (total_len < length)
+ if (total_len < sizeof(*cap) || total_len < cap->bLength) {
+ dev->bos->desc->bNumDeviceCaps = i;
break;
+ }
+ length = cap->bLength;
total_len -= length;
if (cap->bDescriptorType != USB_DT_DEVICE_CAPABILITY) {
next prev parent reply other threads:[~2017-10-24 12:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-24 12:57 [PATCH 3.18 00/20] 3.18.78-stable review Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 01/20] USB: devio: Revert "USB: devio: Dont corrupt user memory" Greg Kroah-Hartman
2017-10-24 12:57 ` Greg Kroah-Hartman [this message]
2017-10-24 12:57 ` [PATCH 3.18 03/20] USB: serial: metro-usb: add MS7820 device id Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 04/20] usb: cdc_acm: Add quirk for Elatec TWN3 Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 06/20] usb: hub: Allow reset retry for USB2 devices on connect bounce Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 07/20] can: gs_usb: fix busy loop if no more TX context is available Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 09/20] ALSA: seq: Enable use locking in all configurations Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 10/20] ALSA: hda: Remove superfluous - added by printk conversion Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 11/20] i2c: ismt: Separate I2C block read from SMBus block read Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 12/20] brcmsmac: make some local variables static const to reduce stack size Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 13/20] bus: mbus: fix window size calculation for 4GB windows Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 14/20] KEYS: encrypted: fix dereference of NULL user_key_payload Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 15/20] lib/digsig: " Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 16/20] KEYS: dont let add_key() update an uninstantiated key Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 18/20] parisc: Avoid trashing sr2 and sr3 in LWS code Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 19/20] parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels Greg Kroah-Hartman
2017-10-24 12:57 ` [PATCH 3.18 20/20] af_packet: dont pass empty blocks for PACKET_V3 Greg Kroah-Hartman
2017-10-24 21:27 ` [PATCH 3.18 00/20] 3.18.78-stable review Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171024125651.991852899@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=andreyknvl@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).