10
10
* sections of the MSLA applicable to Source Code.
11
11
*
12
12
*****************************************************************************/
13
-
13
+ #include <assert.h>
14
14
#include "zwave_api_demo.h"
15
15
16
16
#define LOG_TAG "zwapi_api_demo_callbacks"
@@ -26,30 +26,70 @@ void zwapi_demo_application_handler(uint8_t rx_status,
26
26
char message [MAXIMUM_MESSAGE_SIZE ];
27
27
uint16_t index = 0 ;
28
28
29
- index += snprintf (message + index ,
30
- sizeof (message ) - index ,
31
- "Z-Wave Command received: " );
32
- index += snprintf (message + index ,
33
- sizeof (message ) - index ,
34
- "rx_status: %d - " ,
35
- rx_status );
36
- index += snprintf (message + index ,
37
- sizeof (message ) - index ,
38
- "destination NodeID: %d - " ,
39
- destination_node_id );
40
- index += snprintf (message + index ,
41
- sizeof (message ) - index ,
42
- "source NodeID: %d - " ,
43
- source_node_id );
44
- index += snprintf (message + index ,
45
- sizeof (message ) - index ,
46
- "RSSI value: %d - Payload: " ,
47
- rssi_value );
29
+ int written = snprintf (message + index ,
30
+ sizeof (message ) - index ,
31
+ "Z-Wave Command received: " );
32
+ if (written < 0 || written >= sizeof (message ) - index ) {
33
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
34
+ assert (false);
35
+ return ;
36
+ }
37
+ index += written ;
38
+ written = snprintf (message + index ,
39
+ sizeof (message ) - index ,
40
+ "rx_status: %d - " ,
41
+ rx_status );
42
+ if (written < 0 || written >= sizeof (message ) - index ) {
43
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
44
+ assert (false);
45
+ break ;
46
+ }
47
+ index += written ;
48
+ written = snprintf (message + index ,
49
+ sizeof (message ) - index ,
50
+ "destination NodeID: %d - " ,
51
+ destination_node_id );
52
+ if (written < 0 || written >= sizeof (message ) - index ) {
53
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
54
+ assert (false);
55
+
56
+ break ;
57
+ }
58
+ index += written ;
59
+ written = snprintf (message + index ,
60
+ sizeof (message ) - index ,
61
+ "source NodeID: %d - " ,
62
+ source_node_id );
63
+ if (written < 0 || written >= sizeof (message ) - index ) {
64
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
65
+ assert (false);
66
+
67
+ break ;
68
+ }
69
+ index += written ;
70
+ written = snprintf (message + index ,
71
+ sizeof (message ) - index ,
72
+ "RSSI value: %d - Payload: " ,
73
+ rssi_value );
74
+ if (written < 0 || written >= sizeof (message ) - index ) {
75
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
76
+ assert (false);
77
+
78
+ break ;
79
+ }
80
+ index += written ;
48
81
for (uint8_t i = 0 ; i < zwave_command_length ; i ++ ) {
49
- index += snprintf (message + index ,
50
- sizeof (message ) - index ,
51
- "%02X " ,
52
- zwave_command [i ]);
82
+ written = snprintf (message + index ,
83
+ sizeof (message ) - index ,
84
+ "%02X " ,
85
+ zwave_command [i ]);
86
+ if (written < 0 || written >= sizeof (message ) - index ) {
87
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
88
+ assert (false);
89
+
90
+ break ;
91
+ }
92
+ index += written ;
53
93
}
54
94
sl_log_debug (LOG_TAG , "%s\n" , message );
55
95
}
@@ -64,28 +104,68 @@ void zwapi_demo_application_controller_update(uint8_t status,
64
104
char message [MAXIMUM_MESSAGE_SIZE ];
65
105
uint16_t index = 0 ;
66
106
67
- index += snprintf (message + index , sizeof (message ) - index , "NIF received: " );
68
- index += snprintf (message + index ,
69
- sizeof (message ) - index ,
70
- "status: %d - " ,
71
- status );
72
- index += snprintf (message + index ,
73
- sizeof (message ) - index ,
74
- "NodeID: %d - " ,
75
- node_id );
76
-
77
- index += snprintf (message + index ,
78
- sizeof (message ) - index ,
79
- "NWI HomeID: %X - " ,
80
- nwi_home_id );
107
+ int written
108
+ = snprintf (message + index , sizeof (message ) - index , "NIF received: " );
109
+ if (written < 0 || written >= sizeof (message ) - index ) {
110
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
111
+ assert (false);
81
112
82
- index += snprintf (message + index , sizeof (message ) - index , "NIF Contents:" );
113
+ return ;
114
+ }
115
+ index += written ;
116
+ written = snprintf (message + index ,
117
+ sizeof (message ) - index ,
118
+ "status: %d - " ,
119
+ status );
120
+ if (written < 0 || written >= sizeof (message ) - index ) {
121
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
122
+ assert (false);
123
+
124
+ break ;
125
+ }
126
+ index += written ;
127
+ written = snprintf (message + index ,
128
+ sizeof (message ) - index ,
129
+ "NodeID: %d - " ,
130
+ node_id );
131
+ if (written < 0 || written >= sizeof (message ) - index ) {
132
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
133
+ assert (false);
134
+
135
+ break ;
136
+ }
137
+ index += written ;
138
+ written = snprintf (message + index ,
139
+ sizeof (message ) - index ,
140
+ "NWI HomeID: %X - " ,
141
+ nwi_home_id );
142
+ if (written < 0 || written >= sizeof (message ) - index ) {
143
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
144
+ assert (false);
145
+
146
+ break ;
147
+ }
148
+ index += written ;
149
+ written = snprintf (message + index , sizeof (message ) - index , "NIF Contents:" );
150
+ if (written < 0 || written >= sizeof (message ) - index ) {
151
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
152
+ assert (false);
83
153
154
+ break ;
155
+ }
156
+ index += written ;
84
157
for (uint8_t i = 0 ; i < zwave_nif_length ; i ++ ) {
85
- index += snprintf (message + index ,
86
- sizeof (message ) - index ,
87
- "%02X " ,
88
- zwave_nif [i ]);
158
+ written = snprintf (message + index ,
159
+ sizeof (message ) - index ,
160
+ "%02X " ,
161
+ zwave_nif [i ]);
162
+ if (written < 0 || written >= sizeof (message ) - index ) {
163
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
164
+ assert (false);
165
+
166
+ break ;
167
+ }
168
+ index += written ;
89
169
}
90
170
sl_log_debug (LOG_TAG , "%s\n" , message );
91
171
}
@@ -305,12 +385,24 @@ void zwapi_demo_zwave_api_started(const uint8_t *buffer, uint8_t buffer_length)
305
385
char message [MAXIMUM_MESSAGE_SIZE ];
306
386
uint8_t index = 0 ;
307
387
308
- index += snprintf (message + index ,
309
- sizeof (message ) - index ,
310
- "Z-Wave API started. Current NIF: " );
388
+ int written = snprintf (message + index ,
389
+ sizeof (message ) - index ,
390
+ "Z-Wave API started. Current NIF: " );
391
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
392
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
393
+ assert (false);
394
+ return ;
395
+ }
396
+ index += written ;
311
397
for (uint8_t i = 0 ; i < buffer_length ; i ++ ) {
312
- index
313
- += snprintf (message + index , sizeof (message ) - index , "%02X " , buffer [i ]);
398
+ written
399
+ = snprintf (message + index , sizeof (message ) - index , "%02X " , buffer [i ]);
400
+ if (written < 0 || written >= (int )(sizeof (message ) - index )) {
401
+ sl_log_error (LOG_TAG , "Buffer overflow prevented while writing message." );
402
+ assert (false);
403
+ return ;
404
+ }
405
+ index += written ;
314
406
}
315
407
sl_log_info (LOG_TAG , "%s\n" , message );
316
408
}
0 commit comments