aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlin Radoslavov <pavlin@google.com>2018-05-30 19:26:16 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-08-03 19:16:41 +0000
commitdd77b7decc1f02532e1f7cec6d6dde99b29c99ff (patch)
tree9d8cc1c20ae09340bad1e1b55e9b6dfdd114d4ca
parent9d6ae3017353e9f0fc1868602dcced5cf60e081f (diff)
downloadbt-dd77b7decc1f02532e1f7cec6d6dde99b29c99ff.tar.gz
Add packet length check for received AVCTP packets
Bug: 79944113 Test: Manual: Custom test program and extra logging Change-Id: Icde465fed723bf876ce3885d11099fddcb92de81 Merged-In: Icde465fed723bf876ce3885d11099fddcb92de81 (cherry picked from commit 2a934acf498a6b715cc7c634123aa403a70fe9e6) (cherry picked from commit d6fb21d8d8ae20addfc51246d840151fc86d8572)
-rw-r--r--stack/avct/avct_bcb_act.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/stack/avct/avct_bcb_act.cc b/stack/avct/avct_bcb_act.cc
index bd99562ca..70d8ce743 100644
--- a/stack/avct/avct_bcb_act.cc
+++ b/stack/avct/avct_bcb_act.cc
@@ -25,6 +25,7 @@
*
*****************************************************************************/
+#include <log/log.h>
#include <string.h>
#include "avct_api.h"
#include "avct_int.h"
@@ -520,6 +521,14 @@ void avct_bcb_msg_ind(tAVCT_BCB* p_bcb, tAVCT_LCB_EVT* p_data) {
return;
}
+ if (p_data->p_buf->len < AVCT_HDR_LEN_SINGLE) {
+ AVCT_TRACE_WARNING("Invalid AVCTP packet length %d: must be at least %d",
+ p_data->p_buf->len, AVCT_HDR_LEN_SINGLE);
+ osi_free_and_reset((void**)&p_data->p_buf);
+ android_errorWriteLog(0x534e4554, "79944113");
+ return;
+ }
+
p = (uint8_t*)(p_data->p_buf + 1) + p_data->p_buf->offset;
/* parse header byte */