summaryrefslogtreecommitdiffstats
path: root/stack/l2cap
diff options
context:
space:
mode:
authorPavlin Radoslavov <pavlin@google.com>2017-07-06 13:39:02 -0700
committerAndreas Blaesius <skate4life@gmx.de>2017-09-17 22:11:26 +0200
commit2bb37becb8efe5ba92f2804cf091bde33c8290d4 (patch)
tree4aa8a480a4be21d1c1f78ca6ec19feed4ef5c313 /stack/l2cap
parent27eaaa6e0a490c357411196938a913c958020b39 (diff)
downloadandroid_system_bt-2bb37becb8efe5ba92f2804cf091bde33c8290d4.tar.gz
android_system_bt-2bb37becb8efe5ba92f2804cf091bde33c8290d4.tar.bz2
android_system_bt-2bb37becb8efe5ba92f2804cf091bde33c8290d4.zip
Allocate buffers of the right size when BT_HDR is included
Bug: 63146105 Test: External script Change-Id: I1f2c871e3fcf57aabdad9d07905e6dae643bd496 Merged-In: I1f2c871e3fcf57aabdad9d07905e6dae643bd496 (cherry picked from commit 8810ffba990f8f53172c445ebde8707525bb7813) CVE-2017-0781
Diffstat (limited to 'stack/l2cap')
-rw-r--r--stack/l2cap/l2cap_client.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/stack/l2cap/l2cap_client.c b/stack/l2cap/l2cap_client.c
index 95b8e0131..e4c7d82f6 100644
--- a/stack/l2cap/l2cap_client.c
+++ b/stack/l2cap/l2cap_client.c
@@ -372,7 +372,7 @@ static void fragment_packet(l2cap_client_t *client, buffer_t *packet) {
assert(packet != NULL);
// TODO(sharvil): eliminate copy into BT_HDR.
- BT_HDR *bt_packet = GKI_getbuf(buffer_length(packet) + L2CAP_MIN_OFFSET);
+ BT_HDR *bt_packet = GKI_getbuf(buffer_length(packet) + L2CAP_MIN_OFFSET + sizeof(BT_HDR));
bt_packet->offset = L2CAP_MIN_OFFSET;
bt_packet->len = buffer_length(packet);
memcpy(bt_packet->data + bt_packet->offset, buffer_ptr(packet), buffer_length(packet));
@@ -386,7 +386,7 @@ static void fragment_packet(l2cap_client_t *client, buffer_t *packet) {
break;
}
- BT_HDR *fragment = GKI_getbuf(client->remote_mtu + L2CAP_MIN_OFFSET);
+ BT_HDR *fragment = GKI_getbuf(client->remote_mtu + L2CAP_MIN_OFFSET + sizeof(BT_HDR));
fragment->offset = L2CAP_MIN_OFFSET;
fragment->len = client->remote_mtu;
memcpy(fragment->data + fragment->offset, bt_packet->data + bt_packet->offset, client->remote_mtu);