From 353b860837fedba812a0ec43f50184ec927c23f2 Mon Sep 17 00:00:00 2001 From: xiongweichao Date: Thu, 9 Jan 2025 17:23:17 +0800 Subject: [PATCH] fix(bt/bluedroid): Fixed incorrect types of some variables in SDP --- .../bt/host/bluedroid/api/esp_sdp_api.c | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/components/bt/host/bluedroid/api/esp_sdp_api.c b/components/bt/host/bluedroid/api/esp_sdp_api.c index 11e0e15340..5c27ee844c 100644 --- a/components/bt/host/bluedroid/api/esp_sdp_api.c +++ b/components/bt/host/bluedroid/api/esp_sdp_api.c @@ -20,10 +20,27 @@ static bool esp_sdp_record_integrity_check(esp_bluetooth_sdp_record_t *record) bool ret = true; if (record != NULL) { - if (record->hdr.service_name_length > ESP_SDP_SERVER_NAME_MAX || - strlen(record->hdr.service_name) + 1 != record->hdr.service_name_length) { - LOG_ERROR("Invalid server name!\n"); - ret = false; + switch (record->hdr.type) { + case ESP_SDP_TYPE_MAP_MAS: + if ((record->mas.mas_instance_id >> 8) || (record->mas.supported_message_types >> 8)) { + LOG_ERROR("mas_instance_id and supported_message_types are defined as uint8_t in the spec!\n"); + ret = false; + } + break; + case ESP_SDP_TYPE_PBAP_PSE: + if (record->pse.supported_repositories >> 8) { + LOG_ERROR("supported_repositories is defined in the spec as uint8_t!\n"); + ret = false; + } + break; + + default: + if (record->hdr.service_name_length > ESP_SDP_SERVER_NAME_MAX || + strlen(record->hdr.service_name) + 1 != record->hdr.service_name_length) { + LOG_ERROR("Invalid server name!\n"); + ret = false; + } + break; } } else { LOG_ERROR("record is NULL!\n");