DivestOS/Patches/LineageOS-20.0/ASB2023-09/bt-02.patch

84 lines
2.5 KiB
Diff
Raw Normal View History

20.0: September ASB picks wget https://github.com/GrapheneOS/platform_packages_services_Telephony/commit/b96ee4a2d1ec8c552af40820077fe85f9b2fa01f.patch -O telephony-01.patch wget https://github.com/GrapheneOS/platform_packages_providers_MediaProvider/commit/c16e6e78c1c8ba40f8c2ff6a4d87afe44590eb7f.patch -O media-01.patch wget https://github.com/GrapheneOS/platform_packages_providers_MediaProvider/commit/d5771450d7b2acde9fa051dedbb6c115b001d48b.patch -O media-02.patch wget https://github.com/GrapheneOS/platform_packages_modules_NeuralNetworks/commit/a1370bd00c106e4d172dc68638778fa111f6ecbe.patch -O nn-01.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/ce2776f4ca4fba080bd64bffa2c8fa2d0188bd45.patch -O bt-01.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/585f583ef5e6c2446df7700d8959774771d2a9d8.patch -O bt-02.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/c9905e7968f603014d8ebd631393f9ba1ffd98c9.patch -O bt-03.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/c93ec045f59462f2fb64242da1a119a7b49c3d50.patch -O bt-04.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/89fb17d17249382f8bd5c4c9b0912447ea7ff676.patch -O bt-05.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/14aed2455e4e800e4bde6175ad3c4910ffcf7b0e.patch -O bt-06.patch wget https://github.com/GrapheneOS/platform_packages_modules_Bluetooth/commit/cd438ebc524bc27b6200c70ccb6ed9f8d0271a10.patch -O bt-07.patch wget https://github.com/GrapheneOS/platform_packages_apps_Nfc/commit/27e7cdc4e5748e2ad85552433cf9c120fd7a936b.patch -O nfc-01.patch wget https://github.com/GrapheneOS/platform_packages_apps_Launcher3/commit/dfeb4270b8ecad08bc5361f122af9453881a5987.patch -O launcher-01.patch wget https://github.com/GrapheneOS/platform_frameworks_native/commit/b1993f6cec45bc638ea1d2875c91d069e89ca57e.patch -O native-01.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/df4a9362cd39867ca7deee537934649bd6a2589f.patch -O fwb-01.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/b55563bb9d534210c3f4c5e21ba07a63360c2094.patch -O fwb-02.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/a80971a28168f2667a2821d008964ba001cad059.patch -O fwb-03.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/7e173b43837c419a7cb77f5758191a557fdc76fa.patch -O fwb-04.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/44191b1c6b55d9e09d8b5fca96176035abc18c31.patch -O fwb-05.patch wget https://github.com/GrapheneOS/platform_frameworks_base/commit/8dc8dfe572ce5e4bcb64418275b6d8c4e05284ac.patch -O fwb-06.patch wget https://github.com/GrapheneOS/platform_frameworks_av/commit/00a42241007a2c2a03b97656c958236091553b80.patch -O av-01.patch wget https://github.com/GrapheneOS/platform_packages_apps_Settings/commit/21623d1f437beb59ceee1fc88cd07d48e3f6a13e.patch -O settings-01.patch wget https://github.com/GrapheneOS/platform_packages_apps_Settings/commit/fa5ec443d94922424112fe8a7c7f9d3b36dca67d.patch -O settings-02.patch wget https://github.com/GrapheneOS/platform_packages_apps_Settings/commit/ba4da9c7b3a711a5e1c73dcf361b0c14fe02ebf4.patch -O settings-03.patch Signed-off-by: Tad <tad@spotco.us>
2023-09-06 19:26:45 +00:00
From 585f583ef5e6c2446df7700d8959774771d2a9d8 Mon Sep 17 00:00:00 2001
From: Hui Peng <phui@google.com>
Date: Thu, 11 May 2023 01:10:04 +0000
Subject: [PATCH] Fix multiple OOB bugs resulted from tx mtu in EATT
The tx mtu in EATT can be controlled by remote device. With malicious
mtu values, it is possible to trigger integer overflow and
OOB write at multiple places (see the bug below).
This fix enforces a max tx mtu in EATT.
Bug: 271335899
Test: manual
Ignore-AOSP-First: security
Tag: #security
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ea76b7d99e6366e2043c5621eda630d559104d36)
Merged-In: Ia06c9a17f2daa5ce4c32cffa536777f47774cf31
Change-Id: Ia06c9a17f2daa5ce4c32cffa536777f47774cf31
---
system/stack/eatt/eatt.h | 9 +++++++--
system/stack/eatt/eatt_impl.h | 2 +-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/system/stack/eatt/eatt.h b/system/stack/eatt/eatt.h
index 6ef3d3359a..1310f65480 100644
--- a/system/stack/eatt/eatt.h
+++ b/system/stack/eatt/eatt.h
@@ -17,6 +17,7 @@
#pragma once
+#include <algorithm>
#include <deque>
#include "stack/gatt/gatt_int.h"
@@ -24,6 +25,7 @@
#define EATT_MIN_MTU_MPS (64)
#define EATT_DEFAULT_MTU (256)
+#define EATT_MAX_TX_MTU (1024)
#define EATT_ALL_CIDS (0xFFFF)
namespace bluetooth {
@@ -59,13 +61,13 @@ class EattChannel {
EattChannel(RawAddress& bda, uint16_t cid, uint16_t tx_mtu, uint16_t rx_mtu)
: bda_(bda),
cid_(cid),
- tx_mtu_(tx_mtu),
rx_mtu_(rx_mtu),
state_(EattChannelState::EATT_CHANNEL_PENDING),
indicate_handle_(0),
ind_ack_timer_(NULL),
ind_confirmation_timer_(NULL) {
cl_cmd_q_ = std::deque<tGATT_CMD_Q>();
+ EattChannelSetTxMTU(tx_mtu);
}
~EattChannel() {
@@ -94,7 +96,10 @@ class EattChannel {
}
state_ = state;
}
- void EattChannelSetTxMTU(uint16_t tx_mtu) { this->tx_mtu_ = tx_mtu; }
+
+ void EattChannelSetTxMTU(uint16_t tx_mtu) {
+ this->tx_mtu_ = std::min<uint16_t>(tx_mtu, EATT_MAX_TX_MTU);
+ }
};
/* Interface class */
diff --git a/system/stack/eatt/eatt_impl.h b/system/stack/eatt/eatt_impl.h
index 998fc10905..c5a78550ce 100644
--- a/system/stack/eatt/eatt_impl.h
+++ b/system/stack/eatt/eatt_impl.h
@@ -447,7 +447,7 @@ struct eatt_impl {
if (is_local_cfg)
channel->rx_mtu_ = p_cfg->mtu;
else
- channel->tx_mtu_ = p_cfg->mtu;
+ channel->EattChannelSetTxMTU(p_cfg->mtu);
/* Go back to open state */
channel->EattChannelSetState(EattChannelState::EATT_CHANNEL_OPENED);