diff --git a/system/stack/btu/btu_hcif.cc b/system/stack/btu/btu_hcif.cc index 44dbc68dbc775785044f05699ae96c23878ee85c..41ec9e0da141965137de25cb10e36246d1a71cf4 100644 --- a/system/stack/btu/btu_hcif.cc +++ b/system/stack/btu/btu_hcif.cc @@ -343,7 +343,7 @@ void btu_hcif_process_event(UNUSED_ATTR uint8_t controller_id, btm_ble_process_adv_pkt(ble_evt_len, p); break; case HCI_BLE_LL_CONN_PARAM_UPD_EVT: - btu_ble_ll_conn_param_upd_evt(p, hci_evt_len); + btu_ble_ll_conn_param_upd_evt(p, ble_evt_len); break; case HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT: btm_ble_read_remote_features_complete(p); @@ -1649,6 +1649,11 @@ static void btu_ble_ll_conn_param_upd_evt(uint8_t* p, uint16_t evt_len) { uint16_t latency; uint16_t timeout; + if (evt_len < 9) { + LOG_ERROR("Bogus event packet, too short"); + return; + } + STREAM_TO_UINT8(status, p); STREAM_TO_UINT16(handle, p); STREAM_TO_UINT16(interval, p);