diff --git a/system/stack/a2dp/a2dp_api.cc b/system/stack/a2dp/a2dp_api.cc index 0b1ca69ee74b703103a9489892c3202bd10c33d2..95785eda6fd76e57470ce7ccf9705a1655e8db22 100644 --- a/system/stack/a2dp/a2dp_api.cc +++ b/system/stack/a2dp/a2dp_api.cc @@ -88,23 +88,41 @@ static void a2dp_sdp_cback(tSDP_STATUS status) { peer_address = p_rec->remote_bd_addr; /* get service name */ - if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != - NULL) { - a2dp_svc.p_service_name = (char*)p_attr->attr_value.v.array; - a2dp_svc.service_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); + if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) { + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == TEXT_STR_DESC_TYPE) { + a2dp_svc.p_service_name = (char*)p_attr->attr_value.v.array; + a2dp_svc.service_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); + } else { + LOG_ERROR("ATTR_ID_SERVICE_NAME attr type not STR!!"); + } + } else { + LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); } /* get provider name */ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PROVIDER_NAME)) != NULL) { - a2dp_svc.p_provider_name = (char*)p_attr->attr_value.v.array; - a2dp_svc.provider_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == TEXT_STR_DESC_TYPE) { + a2dp_svc.p_provider_name = (char*)p_attr->attr_value.v.array; + a2dp_svc.provider_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type); + } else { + LOG_ERROR("ATTR_ID_PROVIDER_NAME attr type not STR!!"); + } + } else { + LOG_ERROR("ATTR_ID_PROVIDER_NAME attr not found!!"); } /* get supported features */ if ((p_attr = SDP_FindAttributeInRec( p_rec, ATTR_ID_SUPPORTED_FEATURES)) != NULL) { - a2dp_svc.features = p_attr->attr_value.v.u16; + if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UINT_DESC_TYPE && + SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2) { + a2dp_svc.features = p_attr->attr_value.v.u16; + } else { + LOG_ERROR("ATTR_ID_SUPPORTED_FEATURES attr type not STR!!"); + } + } else { + LOG_ERROR("ATTR_ID_SUPPORTED_FEATURES attr not found!!"); } /* get AVDTP version */