10
10
11
11
#include " Decoder.h"
12
12
#include < connectionHandlerModels/settings_default.h>
13
+ #include < cbor/utils/decoder.h>
13
14
#if defined(BOARD_HAS_ETHERNET)
14
15
#include < IPAddress.h>
15
16
#endif
16
17
17
- // FIXME move this utility functions
18
- static bool copyCBORStringToArray (CborValue * param, char * dest, size_t dest_size) {
19
- if (cbor_value_is_text_string (param)) {
20
- // NOTE: keep in mind that _cbor_value_copy_string tries to put a \0 at the end of the string
21
- if (_cbor_value_copy_string (param, dest, &dest_size, NULL ) == CborNoError) {
22
- return true ;
23
- }
24
- }
25
-
26
- return false ;
27
- }
28
-
29
- // FIXME dest_size should be also returned, the copied byte array can have a different size from the starting one
30
- // for the time being we need this on SHA256 only
31
- static bool copyCBORByteToArray (CborValue * param, uint8_t * dest, size_t dest_size) {
32
- if (cbor_value_is_byte_string (param)) {
33
- // NOTE: keep in mind that _cbor_value_copy_string tries to put a \0 at the end of the string
34
- if (_cbor_value_copy_string (param, dest, &dest_size, NULL ) == CborNoError) {
35
- return true ;
36
- }
37
- }
38
-
39
- return false ;
40
- }
41
-
42
18
MessageDecoder::Status TimestampProvisioningMessageDecoder::decode (CborValue* param, Message* message) {
43
19
TimestampProvisioningMessage* ts = (TimestampProvisioningMessage*) message;
44
20
@@ -56,8 +32,9 @@ MessageDecoder::Status TimestampProvisioningMessageDecoder::decode(CborValue* pa
56
32
MessageDecoder::Status WifiConfigProvisioningMessageDecoder::decode (CborValue* param, Message* message) {
57
33
NetworkConfigProvisioningMessage* provisioningNetworkConfig = (NetworkConfigProvisioningMessage*) message;
58
34
memset (&provisioningNetworkConfig->networkSetting , 0x00 , sizeof (models::NetworkSetting));
35
+ size_t ssidSize = sizeof (provisioningNetworkConfig->networkSetting .wifi .ssid );
59
36
// Message is composed of 2 parameters: ssid and password
60
- if (! copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .wifi .ssid , sizeof (provisioningNetworkConfig-> networkSetting . wifi . ssid )) ) {
37
+ if (cbor::utils:: copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .wifi .ssid , ssidSize) == MessageDecoder::Status::Error ) {
61
38
return MessageDecoder::Status::Error;
62
39
}
63
40
@@ -66,7 +43,8 @@ MessageDecoder::Status WifiConfigProvisioningMessageDecoder::decode(CborValue* p
66
43
return MessageDecoder::Status::Error;
67
44
}
68
45
69
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .wifi .pwd , sizeof (provisioningNetworkConfig->networkSetting .wifi .pwd ))) {
46
+ size_t pwdSize = sizeof (provisioningNetworkConfig->networkSetting .wifi .pwd );
47
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .wifi .pwd , pwdSize) == MessageDecoder::Status::Error) {
70
48
return MessageDecoder::Status::Error;
71
49
}
72
50
provisioningNetworkConfig->networkSetting .type = NetworkAdapter::WIFI;
@@ -92,8 +70,9 @@ MessageDecoder::Status CommandsProvisioningMessageDecoder::decode(CborValue* par
92
70
MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode (CborValue* param, Message* message) {
93
71
NetworkConfigProvisioningMessage* provisioningNetworkConfig = (NetworkConfigProvisioningMessage*) message;
94
72
memset (&provisioningNetworkConfig->networkSetting , 0x00 , sizeof (models::NetworkSetting));
73
+ size_t appeuiSize = sizeof (provisioningNetworkConfig->networkSetting .lora .appeui );
95
74
// Message is composed of 5 parameters: app_eui, app_key, band, channel_mask, device_class
96
- if (! copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .appeui , sizeof (provisioningNetworkConfig-> networkSetting . lora . appeui )) ) {
75
+ if (cbor::utils:: copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .appeui , appeuiSize) == MessageDecoder::Status::Error ) {
97
76
return MessageDecoder::Status::Error;
98
77
}
99
78
@@ -102,7 +81,8 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
102
81
return MessageDecoder::Status::Error;
103
82
}
104
83
105
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .appkey , sizeof (provisioningNetworkConfig->networkSetting .lora .appkey ))) {
84
+ size_t appkeySize = sizeof (provisioningNetworkConfig->networkSetting .lora .appkey );
85
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .appkey , appkeySize) == MessageDecoder::Status::Error) {
106
86
return MessageDecoder::Status::Error;
107
87
}
108
88
@@ -127,7 +107,8 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
127
107
return MessageDecoder::Status::Error;
128
108
}
129
109
130
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .channelMask , sizeof (provisioningNetworkConfig->networkSetting .lora .channelMask ))) {
110
+ size_t channelMaskSize = sizeof (provisioningNetworkConfig->networkSetting .lora .channelMask );
111
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .lora .channelMask , channelMaskSize) == MessageDecoder::Status::Error) {
131
112
return MessageDecoder::Status::Error;
132
113
}
133
114
@@ -138,7 +119,9 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
138
119
139
120
char deviceClass[LORA_DEVICE_CLASS_SIZE];
140
121
memset (deviceClass, 0x00 , sizeof (deviceClass));
141
- if (!copyCBORStringToArray (param, deviceClass, sizeof (deviceClass))) {
122
+
123
+ size_t deviceClassSize = sizeof (deviceClass);
124
+ if (cbor::utils::copyCBORStringToArray (param, deviceClass, deviceClassSize) == MessageDecoder::Status::Error) {
142
125
return MessageDecoder::Status::Error;
143
126
}
144
127
@@ -159,8 +142,9 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
159
142
CborValue array_iter;
160
143
size_t arrayLength = 0 ;
161
144
145
+ size_t pinSize = sizeof (provisioningNetworkConfig->networkSetting .catm1 .pin );
162
146
// Message is composed of 5 parameters: pin, band, apn, login and password
163
- if (! copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .pin , sizeof (provisioningNetworkConfig-> networkSetting . catm1 . pin )) ) {
147
+ if (cbor::utils:: copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .pin , pinSize) == MessageDecoder::Status::Error ) {
164
148
return MessageDecoder::Status::Error;
165
149
}
166
150
@@ -208,7 +192,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
208
192
return MessageDecoder::Status::Error;
209
193
}
210
194
211
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .apn , sizeof (provisioningNetworkConfig->networkSetting .catm1 .apn ))) {
195
+ size_t apnSize = sizeof (provisioningNetworkConfig->networkSetting .catm1 .apn );
196
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .apn , apnSize) == MessageDecoder::Status::Error) {
212
197
return MessageDecoder::Status::Error;
213
198
}
214
199
@@ -217,7 +202,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
217
202
return MessageDecoder::Status::Error;
218
203
}
219
204
220
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .login , sizeof (provisioningNetworkConfig->networkSetting .catm1 .login ))) {
205
+ size_t loginSize = sizeof (provisioningNetworkConfig->networkSetting .catm1 .login );
206
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .login , loginSize) == MessageDecoder::Status::Error) {
221
207
return MessageDecoder::Status::Error;
222
208
}
223
209
@@ -226,7 +212,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
226
212
return MessageDecoder::Status::Error;
227
213
}
228
214
229
- if (!copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .pass , sizeof (provisioningNetworkConfig->networkSetting .catm1 .pass ))) {
215
+ size_t passSize = sizeof (provisioningNetworkConfig->networkSetting .catm1 .pass );
216
+ if (cbor::utils::copyCBORStringToArray (param, provisioningNetworkConfig->networkSetting .catm1 .pass , passSize) == MessageDecoder::Status::Error) {
230
217
return MessageDecoder::Status::Error;
231
218
}
232
219
@@ -343,8 +330,9 @@ MessageDecoder::Status EthernetConfigProvisioningMessageDecoder::decode(CborValu
343
330
#if defined(BOARD_HAS_NB) || defined(BOARD_HAS_GSM) ||defined(BOARD_HAS_CELLULAR)
344
331
static inline MessageDecoder::Status extractCellularFields (CborValue* param, models::CellularSetting* cellSetting) {
345
332
333
+ size_t pinSize = sizeof (cellSetting->pin );
346
334
// Message is composed of 4 parameters: pin, apn, login and password
347
- if (! copyCBORStringToArray (param, cellSetting->pin , sizeof (cellSetting-> pin )) ) {
335
+ if (cbor::utils:: copyCBORStringToArray (param, cellSetting->pin , pinSize) == MessageDecoder::Status::Error ) {
348
336
return MessageDecoder::Status::Error;
349
337
}
350
338
@@ -353,7 +341,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
353
341
return MessageDecoder::Status::Error;
354
342
}
355
343
356
- if (!copyCBORStringToArray (param, cellSetting->apn , sizeof (cellSetting->apn ))) {
344
+ size_t apnSize = sizeof (cellSetting->apn );
345
+ if (cbor::utils::copyCBORStringToArray (param, cellSetting->apn , apnSize) == MessageDecoder::Status::Error) {
357
346
return MessageDecoder::Status::Error;
358
347
}
359
348
@@ -362,7 +351,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
362
351
return MessageDecoder::Status::Error;
363
352
}
364
353
365
- if (!copyCBORStringToArray (param, cellSetting->login , sizeof (cellSetting->login ))) {
354
+ size_t loginSize = sizeof (cellSetting->login );
355
+ if (cbor::utils::copyCBORStringToArray (param, cellSetting->login , loginSize) == MessageDecoder::Status::Error) {
366
356
return MessageDecoder::Status::Error;
367
357
}
368
358
@@ -371,7 +361,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
371
361
return MessageDecoder::Status::Error;
372
362
}
373
363
374
- if (!copyCBORStringToArray (param, cellSetting->pass , sizeof (cellSetting->pass ))) {
364
+ size_t passSize = sizeof (cellSetting->pass );
365
+ if (cbor::utils::copyCBORStringToArray (param, cellSetting->pass , passSize) == MessageDecoder::Status::Error) {
375
366
return MessageDecoder::Status::Error;
376
367
}
377
368
0 commit comments