12
12
*****************************************************************************/
13
13
14
14
//Generic includes
15
+ #include <assert.h>
15
16
#include <stdlib.h>
16
17
#include <stdio.h>
17
18
@@ -76,37 +77,73 @@ void zwave_sl_log_frame_data(
76
77
char message [DEBUG_MESSAGE_BUFFER_LENGTH ];
77
78
uint16_t index = 0 ;
78
79
79
- index += snprintf (message + index ,
80
- sizeof (message ) - index ,
81
- "Z-Wave Frame (NodeID %d:%d -> %d:%d " ,
82
- connection_info -> remote .node_id ,
83
- connection_info -> remote .endpoint_id ,
84
- connection_info -> local .node_id ,
85
- connection_info -> local .endpoint_id );
80
+ int written = snprintf (message + index ,
81
+ sizeof (message ) - index ,
82
+ "Z-Wave Frame (NodeID %d:%d -> %d:%d " ,
83
+ connection_info -> remote .node_id ,
84
+ connection_info -> remote .endpoint_id ,
85
+ connection_info -> local .node_id ,
86
+ connection_info -> local .endpoint_id );
87
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
88
+ assert (false);
89
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
90
+ return ;
91
+ }
92
+ index += written ;
86
93
87
94
if (connection_info -> local .is_multicast ) {
88
- index += snprintf (message + index ,
89
- sizeof (message ) - index ,
90
- "via multicast/broadcast." );
95
+ written = snprintf (message + index ,
96
+ sizeof (message ) - index ,
97
+ "via multicast/broadcast." );
98
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
99
+ assert (false);
100
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
101
+ return ;
102
+ }
103
+ index += written ;
91
104
} else {
92
- index
93
- += snprintf (message + index , sizeof (message ) - index , "via singlecast." );
105
+ written
106
+ = snprintf (message + index , sizeof (message ) - index , "via singlecast." );
107
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
108
+ assert (false);
109
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
110
+ return ;
111
+ }
112
+ index += written ;
94
113
}
95
114
96
- index += snprintf (message + index ,
97
- sizeof (message ) - index ,
98
- " Status flags: 0x%02X - " ,
99
- rx_options -> status_flags );
100
- index += snprintf (message + index ,
101
- sizeof (message ) - index ,
102
- "RSSI: %d dBm - Frame payload (hex): " ,
103
- rx_options -> rssi );
115
+ written = snprintf (message + index ,
116
+ sizeof (message ) - index ,
117
+ " Status flags: 0x%02X - " ,
118
+ rx_options -> status_flags );
119
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
120
+ assert (false);
121
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
122
+ return ;
123
+ }
124
+ index += written ;
125
+ written = snprintf (message + index ,
126
+ sizeof (message ) - index ,
127
+ "RSSI: %d dBm - Frame payload (hex): " ,
128
+ rx_options -> rssi );
129
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
130
+ assert (false);
131
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
132
+ return ;
133
+ }
134
+ index += written ;
104
135
105
136
for (uint8_t i = 0 ; i < frame_length ; i ++ ) {
106
- index += snprintf (message + index ,
107
- sizeof (message ) - index ,
108
- "%02X " ,
109
- frame_data [i ]);
137
+ written = snprintf (message + index ,
138
+ sizeof (message ) - index ,
139
+ "%02X " ,
140
+ frame_data [i ]);
141
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
142
+ assert (false);
143
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_frame_data\n" );
144
+ return ;
145
+ }
146
+ index += written ;
110
147
}
111
148
sl_log_debug (LOG_TAG , "%s\n" , message );
112
149
}
@@ -118,22 +155,41 @@ void zwave_sl_log_nif_data(zwave_node_id_t node_id,
118
155
char message [DEBUG_MESSAGE_BUFFER_LENGTH ];
119
156
uint16_t index = 0 ;
120
157
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 );
158
+ int written = snprintf (message + index ,
159
+ sizeof (message ) - index ,
160
+ "NIF from NodeID: %d" ,
161
+ node_id );
162
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
163
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
164
+ assert (false);
165
+ return ;
166
+ }
167
+ index += written ;
168
+
169
+ written = snprintf (message + index ,
170
+ sizeof (message ) - index ,
171
+ " Capability/Security bytes: 0x%02X 0x%02X - " ,
172
+ node_info -> listening_protocol ,
173
+ node_info -> optional_protocol );
174
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
175
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
176
+ assert (false);
177
+ return ;
178
+ }
179
+ index += written ;
131
180
132
181
if (node_info -> optional_protocol
133
182
& ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_CONTROLLER_MASK ) {
134
- index += snprintf (message + index ,
135
- sizeof (message ) - index ,
136
- "The node is a controller - " );
183
+ written = snprintf (message + index ,
184
+ sizeof (message ) - index ,
185
+ "The node is a controller - " );
186
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
187
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
188
+ assert (false);
189
+ return ;
190
+ }
191
+ index += written ;
192
+
137
193
} else {
138
194
index += snprintf (message + index ,
139
195
sizeof (message ) - index ,
@@ -142,32 +198,64 @@ void zwave_sl_log_nif_data(zwave_node_id_t node_id,
142
198
143
199
if (node_info -> listening_protocol
144
200
& ZWAVE_NODE_INFO_LISTENING_PROTOCOL_LISTENING_MASK ) {
145
- index += snprintf (message + index , sizeof (message ) - index , "AL mode - " );
201
+ written = snprintf (message + index , sizeof (message ) - index , "AL mode - " );
202
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
203
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
204
+ assert (false);
205
+ return ;
206
+ }
207
+ index += written ;
208
+
146
209
} else if (node_info -> optional_protocol
147
210
& (ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_1000MS_MASK
148
211
| ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_250MS_MASK )) {
149
- index += snprintf (message + index ,
150
- sizeof (message ) - index ,
151
- "FL mode (FLiRS) - " );
212
+ written = snprintf (message + index ,
213
+ sizeof (message ) - index ,
214
+ "FL mode (FLiRS) - " );
215
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
216
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
217
+ assert (false);
218
+ return ;
219
+ }
220
+ index += written ;
221
+
152
222
} else {
153
- index += snprintf (message + index ,
154
- sizeof (message ) - index ,
155
- "NL mode (Non-Listening) - " );
223
+ written = snprintf (message + index ,
224
+ sizeof (message ) - index ,
225
+ "NL mode (Non-Listening) - " );
226
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
227
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
228
+ assert (false);
229
+ return ;
230
+ }
231
+ index += written ;
156
232
}
157
233
158
- index += snprintf (message + index ,
159
- sizeof (message ) - index ,
160
- "Basic, Generic and Specific Device Classes: 0x%02X 0x%02X "
161
- "0x%02X - Supported CC list: " ,
162
- node_info -> basic_device_class ,
163
- node_info -> generic_device_class ,
164
- node_info -> specific_device_class );
165
-
234
+ written
235
+ = snprintf (message + index ,
236
+ sizeof (message ) - index ,
237
+ "Basic, Generic and Specific Device Classes: 0x%02X 0x%02X "
238
+ "0x%02X - Supported CC list: " ,
239
+ node_info -> basic_device_class ,
240
+ node_info -> generic_device_class ,
241
+ node_info -> specific_device_class );
242
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
243
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
244
+ assert (false);
245
+ return ;
246
+ }
247
+ index += written ;
166
248
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 ]);
249
+ written = snprintf (message + index ,
250
+ sizeof (message ) - index ,
251
+ "%02X " ,
252
+ node_info -> command_class_list [i ]);
253
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
254
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_nif_data\n" );
255
+ assert (false);
256
+ return ;
257
+ }
258
+ index += written ;
171
259
}
172
260
173
261
sl_log_debug (LOG_TAG , "%s" , message );
@@ -178,7 +266,13 @@ void zwave_sl_log_dsk(const char *tag, const zwave_dsk_t dsk)
178
266
(void )tag ; // Unused in Z-Wave build.
179
267
char message [DEBUG_MESSAGE_BUFFER_LENGTH ];
180
268
uint16_t index = 0 ;
181
- index += snprintf (message + index , sizeof (message ) - index , "DSK: " );
269
+ int written = snprintf (message + index , sizeof (message ) - index , "DSK: " );
270
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
271
+ sl_log_error (LOG_TAG , "Overflow in zwave_sl_log_dsk\n" );
272
+ assert (false);
273
+ return ;
274
+ }
275
+ index += written ;
182
276
zpc_converters_dsk_to_str (dsk , message + index , sizeof (message ) - index );
183
277
sl_log_info (tag , "%s\n" , message );
184
278
}
0 commit comments