|
12 | 12 | *****************************************************************************/ |
13 | 13 |
|
14 | 14 | // Generic includes |
| 15 | +#include <assert.h> |
15 | 16 | #include <string.h> |
16 | 17 | #include <stdio.h> |
17 | 18 |
|
@@ -111,15 +112,22 @@ static const char *zwapi_frame_to_string(const uint8_t *buffer, |
111 | 112 | static char message[1000] = {'\0'}; |
112 | 113 | uint16_t index = 0; |
113 | 114 | for (uint16_t i = 0; i < buffer_length; i++) { |
| 115 | + int written = 0; |
114 | 116 | if (i == IDX_LEN) { |
115 | | - index += snprintf(message + index, sizeof(message) - index, "Length="); |
| 117 | + written = snprintf(message + index, sizeof(message) - index, "Length="); |
116 | 118 | } else if (i == IDX_TYPE) { |
117 | | - index += snprintf(message + index, sizeof(message) - index, "Type="); |
| 119 | + written = snprintf(message + index, sizeof(message) - index, "Type="); |
118 | 120 | } else if (i == IDX_CMD) { |
119 | | - index += snprintf(message + index, sizeof(message) - index, "Cmd="); |
| 121 | + written = snprintf(message + index, sizeof(message) - index, "Cmd="); |
120 | 122 | } |
121 | | - index |
122 | | - += snprintf(message + index, sizeof(message) - index, "%02X ", buffer[i]); |
| 123 | + written |
| 124 | + = snprintf(message + index, sizeof(message) - index, "%02X ", buffer[i]); |
| 125 | + if (written < 0 || written >= (int)(sizeof(message) - index)) { |
| 126 | + assert(false); |
| 127 | + sl_log_error(LOG_TAG, "Overflow in zwapi_frame_to_string\n"); |
| 128 | + return NULL; |
| 129 | + } |
| 130 | + index += written; |
123 | 131 | } |
124 | 132 | return message; |
125 | 133 | } |
@@ -650,7 +658,7 @@ void zwave_api_protocol_rx_dispatch(uint8_t *pData, uint16_t len) |
650 | 658 | case FUNC_ID_ZW_REQUEST_PROTOCOL_CC_ENCRYPTION: |
651 | 659 | if (zwave_api_get_callbacks()->protocol_cc_encryption_request != NULL) { |
652 | 660 | // ZW->HOST: REQ | 0x6C | destination_node_id | payload_length | payload | protocol_metadata_length | protocol_metadata | use_supervision | session_id |
653 | | - uint8_t current_index = IDX_DATA; |
| 661 | + uint8_t current_index = IDX_DATA; |
654 | 662 | const zwave_node_id_t destination_node_id |
655 | 663 | = zwapi_read_node_id(pData, ¤t_index); |
656 | 664 | const uint8_t payload_length = pData[current_index++]; |
|
0 commit comments