Bluetooth: Audio: Media - search to not modify parameter

Update the search parser to not modify the supplied parameter.
This will allow the parameter to be made 'const'.

Signed-off-by: Asbjørn Sæbø <asbjorn.sabo@nordicsemi.no>
This commit is contained in:
Asbjørn Sæbø 2022-04-06 15:31:18 +02:00 committed by Johan Hedberg
commit ebaad4501c

View file

@ -2614,35 +2614,36 @@ static void parse_search(struct mpl_search search)
bool search_failed = false; bool search_failed = false;
if (search.len > SEARCH_LEN_MAX) { if (search.len > SEARCH_LEN_MAX) {
BT_WARN("Search too long (%d) - truncating", search.len); BT_WARN("Search too long (%d) - aborting", search.len);
search.len = SEARCH_LEN_MAX; search_failed = true;
} } else {
BT_DBG("Parsing %d octets search", search.len); BT_DBG("Parsing %d octets search", search.len);
while (search.len - index > 0) { while (search.len - index > 0) {
sci.len = (uint8_t)search.search[index++]; sci.len = (uint8_t)search.search[index++];
if (sci.len < SEARCH_SCI_LEN_MIN) { if (sci.len < SEARCH_SCI_LEN_MIN) {
BT_WARN("Invalid length field - too small"); BT_WARN("Invalid length field - too small");
search_failed = true; search_failed = true;
break; break;
} }
if (sci.len > (search.len - index)) { if (sci.len > (search.len - index)) {
BT_WARN("Incomplete search control item"); BT_WARN("Incomplete search control item");
search_failed = true; search_failed = true;
break; break;
} }
sci.type = (uint8_t)search.search[index++]; sci.type = (uint8_t)search.search[index++];
if (sci.type < BT_MCS_SEARCH_TYPE_TRACK_NAME || if (sci.type < BT_MCS_SEARCH_TYPE_TRACK_NAME ||
sci.type > BT_MCS_SEARCH_TYPE_ONLY_GROUPS) { sci.type > BT_MCS_SEARCH_TYPE_ONLY_GROUPS) {
search_failed = true; search_failed = true;
break; break;
} }
memcpy(&sci.param, &search.search[index], sci.len - 1); memcpy(&sci.param, &search.search[index], sci.len - 1);
index += sci.len - 1; index += sci.len - 1;
BT_DBG("SCI # %d: type: %d", sci_num, sci.type); BT_DBG("SCI # %d: type: %d", sci_num, sci.type);
BT_HEXDUMP_DBG(sci.param, sci.len-1, "param:"); BT_HEXDUMP_DBG(sci.param, sci.len-1, "param:");
sci_num++; sci_num++;
}
} }
/* TODO: Add real search functionality. */ /* TODO: Add real search functionality. */