]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Aug 2018 17:01:01 +0000 (19:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Aug 2018 17:01:01 +0000 (19:01 +0200)
added patches:
bluetooth-hidp-buffer-overflow-in-hidp_process_report.patch

queue-3.18/bluetooth-hidp-buffer-overflow-in-hidp_process_report.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/bluetooth-hidp-buffer-overflow-in-hidp_process_report.patch b/queue-3.18/bluetooth-hidp-buffer-overflow-in-hidp_process_report.patch
new file mode 100644 (file)
index 0000000..9c74d86
--- /dev/null
@@ -0,0 +1,50 @@
+From 7992c18810e568b95c869b227137a2215702a805 Mon Sep 17 00:00:00 2001
+From: Mark Salyzyn <salyzyn@android.com>
+Date: Tue, 31 Jul 2018 15:02:13 -0700
+Subject: Bluetooth: hidp: buffer overflow in hidp_process_report
+
+From: Mark Salyzyn <salyzyn@android.com>
+
+commit 7992c18810e568b95c869b227137a2215702a805 upstream.
+
+CVE-2018-9363
+
+The buffer length is unsigned at all layers, but gets cast to int and
+checked in hidp_process_report and can lead to a buffer overflow.
+Switch len parameter to unsigned int to resolve issue.
+
+This affects 3.18 and newer kernels.
+
+Signed-off-by: Mark Salyzyn <salyzyn@android.com>
+Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough")
+Cc: Marcel Holtmann <marcel@holtmann.org>
+Cc: Johan Hedberg <johan.hedberg@gmail.com>
+Cc: "David S. Miller" <davem@davemloft.net>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Cc: linux-bluetooth@vger.kernel.org
+Cc: netdev@vger.kernel.org
+Cc: linux-kernel@vger.kernel.org
+Cc: security@kernel.org
+Cc: kernel-team@android.com
+Acked-by: Kees Cook <keescook@chromium.org>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/bluetooth/hidp/core.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/bluetooth/hidp/core.c
++++ b/net/bluetooth/hidp/core.c
+@@ -416,8 +416,8 @@ static void hidp_del_timer(struct hidp_s
+               del_timer(&session->timer);
+ }
+-static void hidp_process_report(struct hidp_session *session,
+-                              int type, const u8 *data, int len, int intr)
++static void hidp_process_report(struct hidp_session *session, int type,
++                              const u8 *data, unsigned int len, int intr)
+ {
+       if (len > HID_MAX_BUFFER_SIZE)
+               len = HID_MAX_BUFFER_SIZE;
index 4a937b4eaeb664787ab5fad94f701efd4c191a5a..b75b64d076b36c0f3781af71b222058ef033c850 100644 (file)
@@ -12,3 +12,4 @@ crypto-vmac-require-a-block-cipher-with-128-bit-block-size.patch
 crypto-vmac-separate-tfm-and-request-context.patch
 crypto-blkcipher-fix-crash-flushing-dcache-in-error-path.patch
 crypto-ablkcipher-fix-crash-flushing-dcache-in-error-path.patch
+bluetooth-hidp-buffer-overflow-in-hidp_process_report.patch