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 */