diff --git a/system/bta/gatt/bta_gatts_api.cc b/system/bta/gatt/bta_gatts_api.cc index 74ef835b1f260686ce61cece9008398ac5e5d880..b3769ac4e5bdf00b357d17c3549b53fbafe2b782 100644 --- a/system/bta/gatt/bta_gatts_api.cc +++ b/system/bta/gatt/bta_gatts_api.cc @@ -242,6 +242,12 @@ void BTA_GATTS_StopService(uint16_t service_id) { void BTA_GATTS_HandleValueIndication(uint16_t conn_id, uint16_t attr_id, std::vector<uint8_t> value, bool need_confirm) { + + if (value.size() > sizeof(tBTA_GATTS_API_INDICATION::value)) { + LOG(ERROR) << __func__ << "data to indicate is too long"; + return; + } + tBTA_GATTS_API_INDICATION* p_buf = (tBTA_GATTS_API_INDICATION*)osi_calloc(sizeof(tBTA_GATTS_API_INDICATION));