commit | e6593aeb748dda03656c45bc5133e6b794d9d119 | [log] [tgz] |
---|---|---|
author | Hui Peng <phui@google.com> | Tue May 16 21:24:07 2023 +0000 |
committer | Fairphone ODM <fairphone-odm@localhost> | Thu Aug 31 16:35:36 2023 +0800 |
tree | 4f4b2f2ad9cb668c002af50a338bc5c2fa970a4a | |
parent | 2adfc465f1878d60f3efe87c5e36e0c832dbb780 [diff] |
Fix an integer overflow bug in avdt_msg_asmbl This is a backport of Iaa4d603921fc4ffb8cfb5783f99ec0963affd6a2 to rvc-dev Bug: 280633699 Test: manual Ignore-AOSP-First: security Tag: #security (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:26347d4bdba646bbba4d27337d2888a04de42639) Merged-In: Iaa4d603921fc4ffb8cfb5783f99ec0963affd6a2 Change-Id: Iaa4d603921fc4ffb8cfb5783f99ec0963affd6a2 (cherry picked from commit 788961b7ff13f65dfc64e992a01fd5aa04596c5e)
diff --git a/stack/avdt/avdt_msg.cc b/stack/avdt/avdt_msg.cc index d0c5434..5e08d02 100644 --- a/stack/avdt/avdt_msg.cc +++ b/stack/avdt/avdt_msg.cc
@@ -1289,14 +1289,14 @@ * NOTE: The buffer is allocated above at the beginning of the * reassembly, and is always of size BT_DEFAULT_BUFFER_SIZE. */ - uint16_t buf_len = BT_DEFAULT_BUFFER_SIZE - sizeof(BT_HDR); + size_t buf_len = BT_DEFAULT_BUFFER_SIZE - sizeof(BT_HDR); /* adjust offset and len of fragment for header byte */ p_buf->offset += AVDT_LEN_TYPE_CONT; p_buf->len -= AVDT_LEN_TYPE_CONT; /* verify length */ - if ((p_ccb->p_rx_msg->offset + p_buf->len) > buf_len) { + if (((size_t) p_ccb->p_rx_msg->offset + (size_t) p_buf->len) > buf_len) { /* won't fit; free everything */ AVDT_TRACE_WARNING("%s: Fragmented message too big!", __func__); osi_free_and_reset((void**)&p_ccb->p_rx_msg);