mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-28 08:37:22 +00:00
test/fuzz: prepare for avrcp fuzzing
This commit is contained in:
parent
12f3b2bdfb
commit
697b823e5f
@ -630,7 +630,7 @@ static avrcp_connection_t * avrcp_handle_incoming_connection_for_role(avrcp_role
|
||||
return connection;
|
||||
}
|
||||
|
||||
static void avrcp_handle_open_connection_for_role( avrcp_connection_t * connection, uint16_t local_cid, uint16_t l2cap_mtu){
|
||||
static void avrcp_handle_open_connection(avrcp_connection_t * connection, uint16_t local_cid, uint16_t l2cap_mtu){
|
||||
connection->l2cap_signaling_cid = local_cid;
|
||||
connection->l2cap_mtu = l2cap_mtu;
|
||||
connection->incoming_declined = false;
|
||||
@ -758,8 +758,8 @@ static void avrcp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
|
||||
|
||||
switch (status){
|
||||
case ERROR_CODE_SUCCESS:
|
||||
avrcp_handle_open_connection_for_role(connection_target, local_cid, l2cap_mtu);
|
||||
avrcp_handle_open_connection_for_role(connection_controller, local_cid, l2cap_mtu);
|
||||
avrcp_handle_open_connection(connection_target, local_cid, l2cap_mtu);
|
||||
avrcp_handle_open_connection(connection_controller, local_cid, l2cap_mtu);
|
||||
avrcp_emit_connection_established(connection_controller->avrcp_cid, event_addr, status);
|
||||
return;
|
||||
case L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_RESOURCES:
|
||||
@ -925,3 +925,18 @@ void avrcp_register_packet_handler(btstack_packet_handler_t callback){
|
||||
btstack_assert(callback != NULL);
|
||||
avrcp_callback = callback;
|
||||
}
|
||||
|
||||
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
#define FUZZ_CID 0x44
|
||||
static bd_addr_t remote_addr = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33 };
|
||||
void avrcp_init_fuzz(void){
|
||||
// setup avrcp connections for cid
|
||||
avrcp_connection_t * connection_controller = avrcp_create_connection(AVRCP_CONTROLLER, remote_addr);
|
||||
avrcp_connection_t * connection_target = avrcp_create_connection(AVRCP_TARGET, remote_addr);
|
||||
avrcp_handle_open_connection(connection_controller, FUZZ_CID, 999);
|
||||
avrcp_handle_open_connection(connection_target, FUZZ_CID, 999);
|
||||
}
|
||||
void avrcp_packet_handler_fuzz(uint8_t *packet, uint16_t size){
|
||||
avrcp_packet_handler(L2CAP_DATA_PACKET, FUZZ_CID, packet, size);
|
||||
}
|
||||
#endif
|
@ -685,6 +685,12 @@ void avrcp_browsing_register_controller_packet_handler(btstack_packet_handler_t
|
||||
void avrcp_browsing_register_target_packet_handler(btstack_packet_handler_t callback);
|
||||
void avrcp_browsing_request_can_send_now(avrcp_browsing_connection_t * connection, uint16_t l2cap_cid);
|
||||
|
||||
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
void avrcp_init_fuzz(void);
|
||||
void avrcp_packet_handler_fuzz(uint8_t *packet, uint16_t size);
|
||||
#endif
|
||||
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -467,7 +467,9 @@ static void avrcp_handle_l2cap_data_packet_for_signaling_connection(avrcp_connec
|
||||
uint8_t operands[20];
|
||||
uint8_t opcode;
|
||||
int pos = 3;
|
||||
|
||||
|
||||
if (size < 6u) return;
|
||||
|
||||
avrcp_command_type_t ctype = (avrcp_command_type_t) packet[pos++];
|
||||
uint8_t byte_value = packet[pos++];
|
||||
avrcp_subunit_type_t subunit_type = (avrcp_subunit_type_t) (byte_value >> 3);
|
||||
|
@ -748,9 +748,8 @@ static uint8_t avrcp_is_receive_pass_through_cmd(uint8_t operation_id){
|
||||
}
|
||||
|
||||
static void avrcp_handle_l2cap_data_packet_for_signaling_connection(avrcp_connection_t * connection, uint8_t *packet, uint16_t size){
|
||||
UNUSED(connection);
|
||||
UNUSED(packet);
|
||||
UNUSED(size);
|
||||
|
||||
if (size < 6u) return;
|
||||
|
||||
uint16_t pid = 0;
|
||||
uint8_t transport_header = packet[0];
|
||||
|
@ -36,6 +36,7 @@
|
||||
#define HCI_ACL_PAYLOAD_SIZE (1691 + 4)
|
||||
#define HCI_INCOMING_PRE_BUFFER_SIZE 14 // sizeof BNEP header, avoid memcpy
|
||||
|
||||
#define NVM_NUM_LINK_KEYS 16
|
||||
#define NVM_NUM_DEVICE_DB_ENTRIES 20
|
||||
|
||||
// Mesh Configuration
|
||||
|
Loading…
x
Reference in New Issue
Block a user