Skip to content

Commit 5e3933d

Browse files
authored
bump cloud-utils to 1.1.0: use copyCBORStringToArray from cloud-utils (#11)
1 parent c7c6f9d commit 5e3933d

File tree

1 file changed

+30
-39
lines changed
  • src/configuratorAgents/agents/boardConfigurationProtocol/cbor

1 file changed

+30
-39
lines changed

src/configuratorAgents/agents/boardConfigurationProtocol/cbor/Decoder.cpp

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,11 @@
1010

1111
#include "Decoder.h"
1212
#include <connectionHandlerModels/settings_default.h>
13+
#include <cbor/utils/decoder.h>
1314
#if defined(BOARD_HAS_ETHERNET)
1415
#include <IPAddress.h>
1516
#endif
1617

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-
4218
MessageDecoder::Status TimestampProvisioningMessageDecoder::decode(CborValue* param, Message* message) {
4319
TimestampProvisioningMessage* ts = (TimestampProvisioningMessage*) message;
4420

@@ -56,8 +32,9 @@ MessageDecoder::Status TimestampProvisioningMessageDecoder::decode(CborValue* pa
5632
MessageDecoder::Status WifiConfigProvisioningMessageDecoder::decode(CborValue* param, Message* message) {
5733
NetworkConfigProvisioningMessage* provisioningNetworkConfig = (NetworkConfigProvisioningMessage*) message;
5834
memset(&provisioningNetworkConfig->networkSetting, 0x00, sizeof(models::NetworkSetting));
35+
size_t ssidSize = sizeof(provisioningNetworkConfig->networkSetting.wifi.ssid);
5936
// 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) {
6138
return MessageDecoder::Status::Error;
6239
}
6340

@@ -66,7 +43,8 @@ MessageDecoder::Status WifiConfigProvisioningMessageDecoder::decode(CborValue* p
6643
return MessageDecoder::Status::Error;
6744
}
6845

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) {
7048
return MessageDecoder::Status::Error;
7149
}
7250
provisioningNetworkConfig->networkSetting.type = NetworkAdapter::WIFI;
@@ -92,8 +70,9 @@ MessageDecoder::Status CommandsProvisioningMessageDecoder::decode(CborValue* par
9270
MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* param, Message* message) {
9371
NetworkConfigProvisioningMessage* provisioningNetworkConfig = (NetworkConfigProvisioningMessage*) message;
9472
memset(&provisioningNetworkConfig->networkSetting, 0x00, sizeof(models::NetworkSetting));
73+
size_t appeuiSize = sizeof(provisioningNetworkConfig->networkSetting.lora.appeui);
9574
// 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) {
9776
return MessageDecoder::Status::Error;
9877
}
9978

@@ -102,7 +81,8 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
10281
return MessageDecoder::Status::Error;
10382
}
10483

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) {
10686
return MessageDecoder::Status::Error;
10787
}
10888

@@ -127,7 +107,8 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
127107
return MessageDecoder::Status::Error;
128108
}
129109

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) {
131112
return MessageDecoder::Status::Error;
132113
}
133114

@@ -138,7 +119,9 @@ MessageDecoder::Status LoRaConfigProvisioningMessageDecoder::decode(CborValue* p
138119

139120
char deviceClass[LORA_DEVICE_CLASS_SIZE];
140121
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) {
142125
return MessageDecoder::Status::Error;
143126
}
144127

@@ -159,8 +142,9 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
159142
CborValue array_iter;
160143
size_t arrayLength = 0;
161144

145+
size_t pinSize = sizeof(provisioningNetworkConfig->networkSetting.catm1.pin);
162146
// 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) {
164148
return MessageDecoder::Status::Error;
165149
}
166150

@@ -208,7 +192,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
208192
return MessageDecoder::Status::Error;
209193
}
210194

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) {
212197
return MessageDecoder::Status::Error;
213198
}
214199

@@ -217,7 +202,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
217202
return MessageDecoder::Status::Error;
218203
}
219204

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) {
221207
return MessageDecoder::Status::Error;
222208
}
223209

@@ -226,7 +212,8 @@ MessageDecoder::Status CATM1ConfigProvisioningMessageDecoder::decode(CborValue*
226212
return MessageDecoder::Status::Error;
227213
}
228214

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) {
230217
return MessageDecoder::Status::Error;
231218
}
232219

@@ -343,8 +330,9 @@ MessageDecoder::Status EthernetConfigProvisioningMessageDecoder::decode(CborValu
343330
#if defined(BOARD_HAS_NB) || defined(BOARD_HAS_GSM) ||defined(BOARD_HAS_CELLULAR)
344331
static inline MessageDecoder::Status extractCellularFields(CborValue* param, models::CellularSetting* cellSetting) {
345332

333+
size_t pinSize = sizeof(cellSetting->pin);
346334
// 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) {
348336
return MessageDecoder::Status::Error;
349337
}
350338

@@ -353,7 +341,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
353341
return MessageDecoder::Status::Error;
354342
}
355343

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) {
357346
return MessageDecoder::Status::Error;
358347
}
359348

@@ -362,7 +351,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
362351
return MessageDecoder::Status::Error;
363352
}
364353

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) {
366356
return MessageDecoder::Status::Error;
367357
}
368358

@@ -371,7 +361,8 @@ static inline MessageDecoder::Status extractCellularFields(CborValue* param, mod
371361
return MessageDecoder::Status::Error;
372362
}
373363

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) {
375366
return MessageDecoder::Status::Error;
376367
}
377368

0 commit comments

Comments
 (0)