@@ -312,13 +312,27 @@ static sl_status_t node_list()
312
312
if (command_status == SL_STATUS_OK ) {
313
313
char message [MAXIMUM_MESSAGE_SIZE ];
314
314
uint16_t index = 0 ;
315
- index
316
- += snprintf (message + index , sizeof (message ) - index , "NodeID List: " );
315
+ int written
316
+ = snprintf (message + index , sizeof (message ) - index , "NodeID List: " );
317
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
318
+ sl_log_error (LOG_TAG ,
319
+ "Buffer overflow prevented while writing message\n" );
320
+ return SL_STATUS_FAIL ;
321
+ }
322
+ index += written ;
323
+
317
324
for (zwave_node_id_t node_id = ZW_MIN_NODE_ID ; node_id <= ZW_LR_MAX_NODE_ID ;
318
325
node_id ++ ) {
319
326
if (ZW_IS_NODE_IN_MASK (node_id , node_list ) == 1 ) {
320
- index
321
- += snprintf (message + index , sizeof (message ) - index , "%d " , node_id );
327
+ written
328
+ = snprintf (message + index , sizeof (message ) - index , "%d " , node_id );
329
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
330
+ sl_log_error (LOG_TAG ,
331
+ "Buffer overflow prevented while writing message\n" );
332
+ assert (false);
333
+ return SL_STATUS_FAIL ;
334
+ }
335
+ index += written ;
322
336
}
323
337
}
324
338
sl_log_info (LOG_TAG , "%s\n" , message );
@@ -337,39 +351,67 @@ static sl_status_t failed_node_list()
337
351
}
338
352
char message [MAXIMUM_MESSAGE_SIZE ];
339
353
uint16_t index = 0 ;
340
- index += snprintf (message + index ,
341
- sizeof (message ) - index ,
342
- "Failed NodeID List: " );
354
+ int written = snprintf (message + index ,
355
+ sizeof (message ) - index ,
356
+ "Failed NodeID List: " );
357
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
358
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message\n" );
359
+ assert (false);
360
+ return SL_STATUS_FAIL ;
361
+ }
362
+ index += written ;
363
+
343
364
for (zwave_node_id_t node_id = ZW_MIN_NODE_ID ; node_id <= ZW_LR_MAX_NODE_ID ;
344
365
node_id ++ ) {
345
366
if (ZW_IS_NODE_IN_MASK (node_id , node_list ) == 1 ) {
346
367
if (zwapi_is_node_failed (node_id )) {
347
- index
348
- += snprintf (message + index , sizeof (message ) - index , "%d " , node_id );
368
+ int written
369
+ = snprintf (message + index , sizeof (message ) - index , "%d " , node_id );
370
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
371
+ sl_log_error (LOG_TAG ,
372
+ "Buffer overflow prevented while writing message\n" );
373
+ assert (false);
374
+ return SL_STATUS_FAIL ;
375
+ }
376
+ index += written ;
349
377
}
350
378
}
351
- }
352
- sl_log_info (LOG_TAG , "%s\n" , message );
353
-
354
- return command_status ;
355
- }
379
+ sl_log_info (LOG_TAG , "%s\n" , message );
356
380
357
- static sl_status_t virtual_node_list ()
358
- {
359
- zwave_nodemask_t node_list = {0 };
381
+ return command_status ;
382
+ }
360
383
361
- sl_status_t command_status = zwapi_get_virtual_nodes (node_list );
362
- if (command_status == SL_STATUS_OK ) {
363
- char message [MAXIMUM_MESSAGE_SIZE ];
364
- uint16_t index = 0 ;
365
- index += snprintf (message + index ,
366
- sizeof (message ) - index ,
367
- "Virtual NodeID List: " );
384
+ static sl_status_t virtual_node_list ()
385
+ {
386
+ zwave_nodemask_t node_list = {0 };
387
+
388
+ sl_status_t command_status = zwapi_get_virtual_nodes (node_list );
389
+ if (command_status == SL_STATUS_OK ) {
390
+ char message [MAXIMUM_MESSAGE_SIZE ];
391
+ uint16_t index = 0 ;
392
+ int written = snprintf (message + index ,
393
+ sizeof (message ) - index ,
394
+ "Virtual NodeID List: " );
395
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
396
+ sl_log_error (LOG_TAG ,
397
+ "Buffer overflow prevented while writing message\n" );
398
+ assert (false);
399
+ return SL_STATUS_FAIL ;
400
+ }
401
+ index += written ;
402
+ }
368
403
for (zwave_node_id_t node_id = ZW_MIN_NODE_ID ; node_id <= ZW_LR_MAX_NODE_ID ;
369
404
node_id ++ ) {
370
405
if (ZW_IS_NODE_IN_MASK (node_id , node_list ) == 1 ) {
371
406
index
372
407
+= snprintf (message + index , sizeof (message ) - index , "%d " , node_id );
408
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
409
+ sl_log_error (LOG_TAG ,
410
+ "Buffer overflow prevented while writing message\n" );
411
+ assert (false);
412
+ return SL_STATUS_FAIL ;
413
+ }
414
+ index += written ;
373
415
}
374
416
}
375
417
sl_log_info (LOG_TAG , "%s\n" , message );
0 commit comments