summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2024-09-27 15:12:48 +0800
committeralk3pInjection <webmaster@raspii.tech>2024-09-27 15:12:48 +0800
commit784822b3b4053fa57c07bd18f5b978fba5b13397 (patch)
tree8408d39cce190a00fa6cc350e198e8ab87b9aeae
parentc79e2acf1f201717a5c7ee3e1b3d19edc22df243 (diff)
parentd6813a428c090072564f93b2796fe3b88a3bd3de (diff)
Merge tag 'LA.QSSI.14.0.r1-17300-qssi.0' into uminekoumineko
"LA.QSSI.14.0.r1-17300-qssi.0" Change-Id: I8d43b94f9e5edae2b3aad3a694ced47914d17956
-rw-r--r--stack/sdp/sdp_utils.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/stack/sdp/sdp_utils.cc b/stack/sdp/sdp_utils.cc
index ec48361fd..66f52c32f 100644
--- a/stack/sdp/sdp_utils.cc
+++ b/stack/sdp/sdp_utils.cc
@@ -739,8 +739,28 @@ bool sdpu_compare_uuid_arrays(uint8_t* p_uuid1, uint32_t len1, uint8_t* p_uuid2,
******************************************************************************/
bool sdpu_compare_uuid_with_attr(const Uuid& uuid, tSDP_DISC_ATTR* p_attr) {
int len = uuid.GetShortestRepresentationSize();
- if (len == 2) return uuid.As16Bit() == p_attr->attr_value.v.u16;
- if (len == 4) return uuid.As32Bit() == p_attr->attr_value.v.u32;
+ if (len == 2) {
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == Uuid::kNumBytes16) {
+ return uuid.As16Bit() == p_attr->attr_value.v.u16;
+ } else {
+ LOG(ERROR) << "invalid length for discovery attribute";
+ return (false);
+ }
+ }
+ if (len == 4) {
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == Uuid::kNumBytes32) {
+ return uuid.As32Bit() == p_attr->attr_value.v.u32;
+ } else {
+ LOG(ERROR) << "invalid length for discovery attribute";
+ return (false);
+ }
+ }
+
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) != Uuid::kNumBytes128) {
+ LOG(ERROR) << "invalid length for discovery attribute";
+ return (false);
+ }
+
if (memcmp(uuid.To128BitBE().data(), (void*)p_attr->attr_value.v.array,
Uuid::kNumBytes128) == 0)
return (true);