diff --git a/system/stack/srvc/srvc_dis.cc b/system/stack/srvc/srvc_dis.cc index 62cfd7c4983ae843c1b57428087a8112233efdee..3b5d6f1f520a89313a4fdbf9c074eb65aa444cc8 100644 --- a/system/stack/srvc/srvc_dis.cc +++ b/system/stack/srvc/srvc_dis.cc @@ -260,10 +260,17 @@ bool dis_gatt_c_read_dis_req(uint16_t conn_id) { ******************************************************************************/ void dis_c_cmpl_cback(tSRVC_CLCB* p_clcb, tGATTC_OPTYPE op, tGATT_STATUS status, tGATT_CL_COMPLETE* p_data) { - uint16_t read_type = dis_attr_uuid[dis_cb.dis_read_uuid_idx]; + uint16_t read_type; uint8_t *pp = NULL, *p_str; uint16_t conn_id = p_clcb->conn_id; + if (dis_cb.dis_read_uuid_idx >= (sizeof(dis_attr_uuid)/sizeof(dis_attr_uuid[0]))) { + LOG(ERROR) << "invalid dis_cb.dis_read_uuid_idx"; + return; + } + + read_type = dis_attr_uuid[dis_cb.dis_read_uuid_idx]; + VLOG(1) << __func__ << StringPrintf("op_code: 0x%02x status: 0x%02x read_type: 0x%04x", op, status, read_type);