mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-23 19:20:51 +00:00
sdp queries: check if DES element exist before reading it
This commit is contained in:
parent
772b45fd10
commit
14fd128c5a
@ -182,12 +182,13 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel
|
||||
des_element = des_iterator_get_element(&attribute_list_it);
|
||||
des_iterator_init(&prot_it, des_element);
|
||||
element = des_iterator_get_element(&prot_it);
|
||||
if (!element) continue;
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &hid_control_psm);
|
||||
printf("HID Control PSM: 0x%04x\n", (int) hid_control_psm);
|
||||
break;
|
||||
@ -205,12 +206,13 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel
|
||||
des_element = des_iterator_get_element(&additional_des_it);
|
||||
des_iterator_init(&prot_it, des_element);
|
||||
element = des_iterator_get_element(&prot_it);
|
||||
if (!element) continue;
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &hid_interrupt_psm);
|
||||
printf("HID Interrupt PSM: 0x%04x\n", (int) hid_interrupt_psm);
|
||||
break;
|
||||
|
@ -216,18 +216,18 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel
|
||||
des_iterator_init(&prot_it, des_element);
|
||||
element = des_iterator_get_element(&prot_it);
|
||||
|
||||
if (!element) continue;
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_bnep_l2cap_psm);
|
||||
break;
|
||||
case BLUETOOTH_PROTOCOL_BNEP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_bnep_version);
|
||||
break;
|
||||
default:
|
||||
|
@ -231,15 +231,14 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel
|
||||
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
uint32_t uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &l2cap_psm);
|
||||
break;
|
||||
case BLUETOOTH_PROTOCOL_BNEP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &bnep_version);
|
||||
break;
|
||||
default:
|
||||
|
@ -428,15 +428,14 @@ static void avdtp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t c
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_query_context->avdtp_l2cap_psm);
|
||||
break;
|
||||
case BLUETOOTH_PROTOCOL_AVDTP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_query_context->avdtp_version);
|
||||
break;
|
||||
default:
|
||||
|
@ -483,15 +483,14 @@ void avrcp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel,
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_query_context->avrcp_l2cap_psm);
|
||||
break;
|
||||
case BLUETOOTH_PROTOCOL_AVCTP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &sdp_query_context->avrcp_version);
|
||||
break;
|
||||
default:
|
||||
@ -525,15 +524,14 @@ void avrcp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel,
|
||||
if (de_get_element_type(element) != DE_UUID) continue;
|
||||
|
||||
uuid = de_get_uuid32(element);
|
||||
des_iterator_next(&prot_it);
|
||||
switch (uuid){
|
||||
case BLUETOOTH_PROTOCOL_L2CAP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &connection->browsing_l2cap_psm);
|
||||
break;
|
||||
case BLUETOOTH_PROTOCOL_AVCTP:
|
||||
if (!des_iterator_has_more(&prot_it)) continue;
|
||||
des_iterator_next(&prot_it);
|
||||
de_element_get_uint16(des_iterator_get_element(&prot_it), &connection->browsing_version);
|
||||
break;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user