From c70b3b486dde2b96829c110a442a90c62ebfbd82 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Fri, 24 Mar 2023 17:19:35 +0100 Subject: [PATCH] hci_event: provide buffer size to event builders --- port/nrf5-cinnamon/port/ll_nrf5.c | 2 +- src/hci_event.c | 10 ++++++---- src/hci_event.h | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/port/nrf5-cinnamon/port/ll_nrf5.c b/port/nrf5-cinnamon/port/ll_nrf5.c index d51f9b736..4de875bc8 100644 --- a/port/nrf5-cinnamon/port/ll_nrf5.c +++ b/port/nrf5-cinnamon/port/ll_nrf5.c @@ -381,7 +381,7 @@ static uint32_t ll_start_ticks_for_end_time_and_len(uint32_t packet_end_ticks, u static void ll_emit_hci_event(const hci_event_t * event, ...){ va_list argptr; va_start(argptr, event); - uint16_t length = hci_event_create_from_template_and_arglist(ll_outgoing_hci_event, event, argptr); + uint16_t length = hci_event_create_from_template_and_arglist(ll_outgoing_hci_event, sizeof(ll_outgoing_hci_event), event, argptr); va_end(argptr); controller_packet_handler(HCI_EVENT_PACKET, ll_outgoing_hci_event, length); } diff --git a/src/hci_event.c b/src/hci_event.c index 41921477f..1bb9755b1 100644 --- a/src/hci_event.c +++ b/src/hci_event.c @@ -64,8 +64,10 @@ * K: 1-byte length of following variable-length data blob 'V', length is not included in packet * V: variable-length data blob of len provided in 'J' field */ -uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, const hci_event_t *event, va_list argptr){ - +uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, uint16_t buffer_size, const hci_event_t *event, va_list argptr){ + + UNUSED(buffer_size); + hci_event_buffer[0] = event->event_code; uint16_t pos = 2; @@ -150,10 +152,10 @@ uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_event_buffer, c return pos; } -uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, const hci_event_t *event, ...){ +uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, ...){ va_list argptr; va_start(argptr, event); - uint16_t length = hci_event_create_from_template_and_arglist(hci_buffer, event, argptr); + uint16_t length = hci_event_create_from_template_and_arglist(hci_buffer, buffer_size, event, argptr); va_end(argptr); return length; } diff --git a/src/hci_event.h b/src/hci_event.h index a655aa51c..8cb0d6352 100644 --- a/src/hci_event.h +++ b/src/hci_event.h @@ -75,10 +75,10 @@ extern "C" { * K: 1-byte length of following variable-length data blob 'V', length is not included in packet * V: variable-length data blob of len provided in 'J' field */ -uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_buffer, const hci_event_t *event, va_list argptr); +uint16_t hci_event_create_from_template_and_arglist(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, va_list argptr); -uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, const hci_event_t *event, ...); +uint16_t hci_event_create_from_template_and_arguments(uint8_t *hci_buffer, uint16_t buffer_size, const hci_event_t *event, ...); /* LE Events */ extern const hci_event_t hci_event_hardware_error;