Skip to content

Commit 084e738

Browse files
Potential fix for code scanning alert no. 13: Potentially overflowing call to snprintf
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 07b108a commit 084e738

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed

applications/zpc/components/zwave/zwave_controller/src/zwave_controller_utils.c

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,34 @@ void zwave_sl_log_nif_data(zwave_node_id_t node_id,
118118
char message[DEBUG_MESSAGE_BUFFER_LENGTH];
119119
uint16_t index = 0;
120120

121-
index += snprintf(message + index,
122-
sizeof(message) - index,
123-
"NIF from NodeID: %d",
124-
node_id);
125-
126-
index += snprintf(message + index,
127-
sizeof(message) - index,
128-
" Capability/Security bytes: 0x%02X 0x%02X - ",
129-
node_info->listening_protocol,
130-
node_info->optional_protocol);
121+
int n = snprintf(message + index,
122+
sizeof(message) - index,
123+
"NIF from NodeID: %d",
124+
node_id);
125+
if (n < 0 || n >= (int)(sizeof(message) - index)) {
126+
break;
127+
}
128+
index += n;
129+
130+
n = snprintf(message + index,
131+
sizeof(message) - index,
132+
" Capability/Security bytes: 0x%02X 0x%02X - ",
133+
node_info->listening_protocol,
134+
node_info->optional_protocol);
135+
if (n < 0 || n >= (int)(sizeof(message) - index)) {
136+
break;
137+
}
138+
index += n;
131139

132140
if (node_info->optional_protocol
133141
& ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_CONTROLLER_MASK) {
134-
index += snprintf(message + index,
135-
sizeof(message) - index,
136-
"The node is a controller - ");
142+
n = snprintf(message + index,
143+
sizeof(message) - index,
144+
"The node is a controller - ");
145+
if (n < 0 || n >= (int)(sizeof(message) - index)) {
146+
break;
147+
}
148+
index += n;
137149
} else {
138150
index += snprintf(message + index,
139151
sizeof(message) - index,
@@ -142,7 +154,11 @@ void zwave_sl_log_nif_data(zwave_node_id_t node_id,
142154

143155
if (node_info->listening_protocol
144156
& ZWAVE_NODE_INFO_LISTENING_PROTOCOL_LISTENING_MASK) {
145-
index += snprintf(message + index, sizeof(message) - index, "AL mode - ");
157+
n = snprintf(message + index, sizeof(message) - index, "AL mode - ");
158+
if (n < 0 || n >= (int)(sizeof(message) - index)) {
159+
break;
160+
}
161+
index += n;
146162
} else if (node_info->optional_protocol
147163
& (ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_1000MS_MASK
148164
| ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_250MS_MASK)) {
@@ -164,10 +180,14 @@ void zwave_sl_log_nif_data(zwave_node_id_t node_id,
164180
node_info->specific_device_class);
165181

166182
for (uint8_t i = 0; i < node_info->command_class_list_length; i++) {
167-
index += snprintf(message + index,
168-
sizeof(message) - index,
169-
"%02X ",
170-
node_info->command_class_list[i]);
183+
n = snprintf(message + index,
184+
sizeof(message) - index,
185+
"%02X ",
186+
node_info->command_class_list[i]);
187+
if (n < 0 || n >= (int)(sizeof(message) - index)) {
188+
break;
189+
}
190+
index += n;
171191
}
172192

173193
sl_log_debug(LOG_TAG, "%s", message);

0 commit comments

Comments
 (0)