if target_os in ['windows', 'msys_nt']:
libocsrm_env.AppendUnique(LIBPATH = [os.path.join(libocsrm_env.get('BUILD_DIR'), 'resource', 'oc_logger')])
+ # Enable W4 but disable the following warnings:
+ # - warning C4201: nonstandard extension used: nameless struct/union
+ # - Disabled due to the widespread usage in internal IoTivity components as well as external libs.
+ # - warning C4232: nonstandard extension used: 'read': address of dllimport 'fread' is not static, identity not guaranteed
+ # - fread, frwrite, etc are provided by the platform and cannot be changed.
+ # libocsrm_env.AppendUnique(CCFLAGS=['/wd4201', '/wd4232', '/W4', '/WX'])
+ # Leave /W3 /WX enabled until IOT-1835 and IOT-1836 are merged. This is to prevent build breaks and possible /W3 issues from
+ # being merged while the different pieces of the update to /W4 are under review and being merged.
libocsrm_env.AppendUnique(CCFLAGS=['/W3', '/WX'])
if target_os in ['linux', 'android', 'tizen', 'msys_nt', 'windows'] and libocsrm_env.get('SECURED') == '1':
OicSecAce_t* DuplicateACE(const OicSecAce_t* ace)
{
OicSecAce_t* newAce = NULL;
- size_t allocateSize = 0;
if(ace)
{
}
outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
// Create ACL Map (aclist, rownerid)
while (cbor_value_is_valid(&aceMap))
{
char* name = NULL;
- size_t len = 0;
- CborType type = cbor_value_get_type(&aceMap);
- if (type == CborTextStringType)
+ size_t tempLen = 0;
+ CborType aceMapType = cbor_value_get_type(&aceMap);
+ if (aceMapType == CborTextStringType)
{
- cborFindResult = cbor_value_dup_text_string(&aceMap, &name, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&aceMap, &name, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Name in ACE Map.");
cborFindResult = cbor_value_advance(&aceMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing Value in ACE Map.");
if (strcmp(name, OIC_JSON_SUBJECTID_NAME) == 0)
{
char *subject = NULL;
- cborFindResult = cbor_value_dup_text_string(&aceMap, &subject, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&aceMap, &subject, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding subject Value.");
if(strcmp(subject, WILDCARD_RESOURCE_URI) == 0)
{
// "href"
if (0 == strcmp(OIC_JSON_HREF_NAME, rMapName))
{
- cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->href, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->href, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Href Value.");
}
// "rel"
if (0 == strcmp(OIC_JSON_REL_NAME, rMapName))
{
- cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->rel, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->rel, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding REL Value.");
}
cborFindResult = cbor_value_enter_container(&validitiesMap, &validityMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a validity Map.");
- size_t len = 0;
- cborFindResult =cbor_value_dup_text_string(&validityMap, &validity->period, &len, NULL);
+ size_t vmLen = 0;
+ cborFindResult = cbor_value_dup_text_string(&validityMap, &validity->period, &vmLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a Period value.");
//recurrence (string array)
for(size_t i = 0; cbor_value_is_text_string(&recurrenceMap) && i < validity->recurrenceLen; i++)
{
- cborFindResult = cbor_value_dup_text_string(&recurrenceMap, &validity->recurrences[i], &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&recurrenceMap, &validity->recurrences[i], &vmLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a recurrence Value.");
cborFindResult = cbor_value_advance(&recurrenceMap);
OICFree(name);
}
- if (type != CborMapType && cbor_value_is_valid(&aceMap))
+ if (aceMapType != CborMapType && cbor_value_is_valid(&aceMap))
{
cborFindResult = cbor_value_advance(&aceMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing the Array.");
while (cbor_value_is_valid(&aceMap))
{
char* name = NULL;
- size_t len = 0;
- CborType type = cbor_value_get_type(&aceMap);
- if (type == CborTextStringType)
+ size_t tempLen = 0;
+ CborType aceMapType = cbor_value_get_type(&aceMap);
+ if (aceMapType == CborTextStringType)
{
- cborFindResult = cbor_value_dup_text_string(&aceMap, &name, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&aceMap, &name, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Name in ACE Map.");
cborFindResult = cbor_value_advance(&aceMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing Value in ACE Map.");
if (strcmp(name, OIC_JSON_SUBJECTID_NAME) == 0)
{
char *subject = NULL;
- cborFindResult = cbor_value_dup_text_string(&aceMap, &subject, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&aceMap, &subject, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding subject Value.");
if(strcmp(subject, WILDCARD_RESOURCE_URI) == 0)
{
// "href"
if (0 == strcmp(OIC_JSON_HREF_NAME, rMapName))
{
- cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->href, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->href, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Href Value.");
}
// "rel"
if (0 == strcmp(OIC_JSON_REL_NAME, rMapName))
{
- cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->rel, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &rsrc->rel, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding REL Value.");
}
cborFindResult = cbor_value_enter_container(&validitiesMap, &validityMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a validity Map.");
- size_t len = 0;
- cborFindResult =cbor_value_dup_text_string(&validityMap, &validity->period, &len, NULL);
+ size_t vmLen = 0;
+ cborFindResult =cbor_value_dup_text_string(&validityMap, &validity->period, &vmLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a Period value.");
//recurrence (string array)
for(size_t i = 0; cbor_value_is_text_string(&recurrenceMap) && i < validity->recurrenceLen; i++)
{
- cborFindResult = cbor_value_dup_text_string(&recurrenceMap, &validity->recurrences[i], &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&recurrenceMap, &validity->recurrences[i], &vmLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a recurrence Value.");
cborFindResult = cbor_value_advance(&recurrenceMap);
if (strcmp(name, OIC_JSON_EOWNERID_NAME) == 0)
{
char *eowner = NULL;
- cborFindResult = cbor_value_dup_text_string(&aceMap, &eowner, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&aceMap, &eowner, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding eownerId Value.");
if(NULL == ace->eownerID)
{
OICFree(name);
}
- if (type != CborMapType && cbor_value_is_valid(&aceMap))
+ if (aceMapType != CborMapType && cbor_value_is_valid(&aceMap))
{
cborFindResult = cbor_value_advance(&aceMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing the Array.");
* ::OC_STACK_NO_RESOURCE on failure to find the appropriate ACE
* ::OC_STACK_INVALID_PARAM on invalid parameter
*/
-OCStackResult RemoveACE(const OicUuid_t * subject, const char * resource)
+OCStackResult RemoveACE(const OicUuid_t *subject, const char *resource)
{
OIC_LOG(DEBUG, TAG, "IN RemoveACE");
bool deleteFlag = false;
OCStackResult ret = OC_STACK_NO_RESOURCE;
- if (memcmp(subject->id, &WILDCARD_SUBJECT_ID, sizeof(subject->id)) == 0)
+ if (memcmp(subject, &WILDCARD_SUBJECT_ID, sizeof(*subject)) == 0)
{
OIC_LOG_V(ERROR, TAG, "%s received invalid parameter", __func__ );
return OC_STACK_INVALID_PARAM;
* Below code needs to be updated for scenarios when Subject have
* multiple ACE's in ACL resource.
*/
- while ((currentAce = GetACLResourceData(&subject, &savePtr)))
+ for (currentAce = GetACLResourceData(&subject, &savePtr);
+ NULL != currentAce;
+ currentAce = GetACLResourceData(&subject, &savePtr))
{
targetAcl.aces = (OicSecAce_t*)currentAce;
OicSecRsrc_t *rsrc = NULL;
LL_FOREACH(currentAce->resources, rsrc)
{
- if(0 == strcmp(rsrc->href, resource) ||
+ if (0 == strcmp(rsrc->href, resource) ||
0 == strcmp(WILDCARD_RESOURCE_URI, rsrc->href))
{
// Convert ACL data into CBOR format for transmission
if(OC_EH_OK == ehRet)
{
- size_t size = 0;
+ size_t cborSize = 0;
uint8_t *cborPayload = NULL;
- if (OC_STACK_OK == AclToCBORPayload(gAcl, &cborPayload, &size))
+ if (OC_STACK_OK == AclToCBORPayload(gAcl, &cborPayload, &cborSize))
{
- if (UpdateSecureResourceInPS(OIC_JSON_ACL_NAME, cborPayload, size) == OC_STACK_OK)
+ if (UpdateSecureResourceInPS(OIC_JSON_ACL_NAME, cborPayload, cborSize) == OC_STACK_OK)
{
ehRet = OC_EH_CHANGED;
}
OicSecRsrc_t* resRsrc = NULL;
OicSecRsrc_t* deviceRsrc = NULL;
OicSecRsrc_t* platformRsrc = NULL;
- OicSecRsrc_t* aclRsrc = NULL;
OicSecRsrc_t* doxmRsrc = NULL;
OicSecRsrc_t* pstatRsrc = NULL;
VERIFY_NOT_NULL(TAG, readOnlyAce, ERROR);
// Subject -- Mandatory
- memcpy(readOnlyAce->subjectuuid.id, &WILDCARD_SUBJECT_ID, sizeof(OicUuid_t));
+ memcpy(&readOnlyAce->subjectuuid, &WILDCARD_SUBJECT_ID, sizeof(readOnlyAce->subjectuuid));
// Resources -- Mandatory
// /oic/res
VERIFY_NOT_NULL(TAG, readWriteAce, ERROR);
// Subject -- Mandatory
- memcpy(readWriteAce->subjectuuid.id, &WILDCARD_SUBJECT_ID, sizeof(OicUuid_t));
+ memcpy(&readWriteAce->subjectuuid, &WILDCARD_SUBJECT_ID, sizeof(readWriteAce->subjectuuid));
// Resources -- Mandatory
// /oic/sec/doxm
const int NUM_OF_DOXM_IF = 1;
const int NUM_OF_PSTAT_RT = 1;
const int NUM_OF_PSTAT_IF = 1;
+
+#ifdef _MSC_VER
+ // OIC_RSRC_TYPE_SEC_DOXM and OIC_RSRC_TYPE_SEC_PSTAT are const but also extern so they cause warnings.
+#pragma warning(push)
+#pragma warning(disable:4204)
+#endif
+
const char *doxmRt[] = { OIC_RSRC_TYPE_SEC_DOXM };
const char *pstatRt[] = { OIC_RSRC_TYPE_SEC_PSTAT };
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
const char *doxmIf[] = { OC_RSRVD_INTERFACE_DEFAULT };
const char *pstatIf[] = { OC_RSRVD_INTERFACE_DEFAULT };
OicSecRsrc_t* doxmRsrc = NULL;
VERIFY_NOT_NULL(TAG, newAce, ERROR);
// Subject -- Mandatory
- memcpy(newAce->subjectuuid.id, &WILDCARD_SUBJECT_ID, WILDCARD_SUBJECT_ID_LEN);
+ memcpy(&newAce->subjectuuid, &WILDCARD_SUBJECT_ID, WILDCARD_SUBJECT_ID_LEN);
//Resources -- Mandatory
//Add doxm
}
}
-OCStackResult AmaclToCBORPayload(const OicSecAmacl_t *amaclS, uint8_t **cborPayload,
- size_t *cborSize)
+OCStackResult AmaclToCBORPayload(const OicSecAmacl_t *amaclS, uint8_t **cborPayload, size_t *cborSize)
{
if (NULL == amaclS || NULL == cborPayload || NULL != *cborPayload || NULL == cborSize)
{
const OicSecAmacl_t *amacl = amaclS;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
// Create AMACL Map
{
// Append the new Amacl to existing Amacl
LL_APPEND(gAmacl, newAmacl);
- size_t size = 0;
+ size_t cborSize = 0;
// Convert Amacl data into JSON for update to persistent storage.
uint8_t *cborPayload = NULL;
- res = AmaclToCBORPayload(gAmacl, &cborPayload, &size);
+ res = AmaclToCBORPayload(gAmacl, &cborPayload, &cborSize);
if (cborPayload && (OC_STACK_OK == res) &&
- (OC_STACK_OK == UpdateSecureResourceInPS(OIC_JSON_AMACL_NAME, cborPayload, size)))
+ (OC_STACK_OK == UpdateSecureResourceInPS(OIC_JSON_AMACL_NAME, cborPayload, cborSize)))
{
ehRet = OC_EH_RESOURCE_CREATED;
}
}
else
{
- OIC_LOG(ERROR, TAG, "Unknown encoding type.");
- VERIFY_CBOR_SUCCESS(TAG, CborErrorUnknownType, "Failed Adding Encoding Value.");
+ OIC_LOG_V(ERROR, TAG, "Unknown encoding type: %u.", value->encoding);
+ return CborErrorUnknownType;
}
exit:
return cborEncoderResult;
}
outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
// Create CRED Root Map (creds, rownerid)
if (strcmp(tagName, OIC_JSON_CREDS_NAME) == 0)
{
// Enter CREDS Array
- size_t len = 0;
+ size_t tempLen = 0;
int credCount = 0;
CborValue credArray = { .parser = NULL, .ptr = NULL, .remaining = 0, .extra = 0, .type = 0, .flags = 0 };
cborFindResult = cbor_value_enter_container(&CredRootMap, &credArray);
while(cbor_value_is_valid(&credMap) && cbor_value_is_text_string(&credMap))
{
char* name = NULL;
- CborType type = cbor_value_get_type(&credMap);
- if (type == CborTextStringType)
+ CborType cmType = cbor_value_get_type(&credMap);
+ if (cmType == CborTextStringType)
{
- cborFindResult = cbor_value_dup_text_string(&credMap, &name, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&credMap, &name, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Name in CRED Map.");
cborFindResult = cbor_value_advance(&credMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing Value in CRED Map.");
if (strcmp(name, OIC_JSON_SUBJECTID_NAME) == 0)
{
char *subjectid = NULL;
- cborFindResult = cbor_value_dup_text_string(&credMap, &subjectid, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&credMap, &subjectid, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding subjectid Value.");
if(strcmp(subjectid, WILDCARD_RESOURCE_URI) == 0)
{
//Credusage -- Not Mandatory
if (0 == strcmp(OIC_JSON_CREDUSAGE_NAME, name))
{
- cborFindResult = cbor_value_dup_text_string(&credMap, &cred->credUsage, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&credMap, &cred->credUsage, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Period.");
}
#endif //__WITH_DTLS__ || __WITH_TLS__
if (0 == strcmp(OIC_JSON_PERIOD_NAME, name))
{
- cborFindResult = cbor_value_dup_text_string(&credMap, &cred->period, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&credMap, &cred->period, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Period.");
}
if (strcmp(OIC_JSON_EOWNERID_NAME, name) == 0 && cbor_value_is_text_string(&credMap))
{
char *eowner = NULL;
- cborFindResult = cbor_value_dup_text_string(&credMap, &eowner, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&credMap, &eowner, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding eownerId Value.");
if(NULL == cred->eownerID)
{
if ((OC_STACK_OK == res) && payload)
{
- DATA_BLOB decryptedPayload = { .cbData = dwordSize, .pbData = payload };
- DATA_BLOB encryptedPayload = { .cbData = 0, .pbData = NULL };
+ DATA_BLOB decryptedPayload;
+ DATA_BLOB encryptedPayload;
+ memset(&decryptedPayload, 0, sizeof(decryptedPayload));
+ memset(&encryptedPayload, 0, sizeof(encryptedPayload));
+ decryptedPayload.cbData = dwordSize;
+ decryptedPayload.pbData = payload;
if (CryptProtectData(
&decryptedPayload,
}
else
{
- VERIFY_SUCCESS(TAG, OIC_ENCODING_UNKNOW, ERROR);
+ OIC_LOG_V(ERROR, TAG, "Unknown credential encoding type: %u.", receviedCred->privateData.encoding);
+ goto exit;
}
OIC_LOG(INFO, TAG, "PrivateData of OwnerPSK was calculated successfully");
}
else
{
- OIC_LOG(INFO, TAG, "Unknown credential encoding type.");
- VERIFY_SUCCESS(TAG, OIC_ENCODING_UNKNOW, ERROR);
+ OIC_LOG_V(ERROR, TAG, "Unknown credential encoding type: %u.", receviedCred->privateData.encoding);
+ goto exit;
}
OIC_LOG(INFO, TAG, "PrivateData of SubOwnerPSK was calculated successfully");
* If some error is occured while ownership transfer,
* ownership transfer related resource should be revert back to initial status.
*/
- const OicSecDoxm_t* doxm = GetDoxmResourceData();
- if(doxm)
+ const OicSecDoxm_t* ownershipDoxm = GetDoxmResourceData();
+ if(ownershipDoxm)
{
- if(!doxm->owned)
+ if(!ownershipDoxm->owned)
{
OIC_LOG(WARNING, TAG, "The operation failed during handle DOXM request");
{
if(IsEmptyCred(cred))
{
- OicUuid_t emptyUuid = {.id={0}};
if(memcmp(cred->rownerID.id, emptyUuid.id, sizeof(emptyUuid.id)) != 0)
{
OIC_LOG(INFO, TAG, "CRED's rowner will be updated.");
if (ret != OC_STACK_OK)
{
- DATA_BLOB encryptedPayload = { .cbData = dwordSize, .pbData = data };
- DATA_BLOB decryptedPayload = { .cbData = 0, .pbData = NULL };
+ DATA_BLOB decryptedPayload;
+ DATA_BLOB encryptedPayload;
+ memset(&decryptedPayload, 0, sizeof(decryptedPayload));
+ memset(&encryptedPayload, 0, sizeof(encryptedPayload));
+ encryptedPayload.cbData = dwordSize;
+ encryptedPayload.pbData = data;
if (CryptUnprotectData(
&encryptedPayload,
return ret;
}
- if(B64_OK != b64Decode((char*)wildCardCred->privateData.data, wildCardCred->privateData.len, pinBuffer, pinBufSize, &pinLength))
+ if(B64_OK != b64Decode((char*)wildCardCred->privateData.data, wildCardCred->privateData.len, (uint8_t*)pinBuffer, pinBufSize, &pinLength))
{
OIC_LOG (ERROR, TAG, "Failed to base64 decoding.");
return ret;
}
uint8_t privData[OWNER_PSK_LENGTH_128] = {0,};
- OicSecKey_t privKey = {privData, OWNER_PSK_LENGTH_128, OIC_ENCODING_RAW};
+ OicSecKey_t privKey;
+ memset(&privKey, 0, sizeof(privKey));
+ privKey.data = privData;
+ privKey.len = OWNER_PSK_LENGTH_128;
+ privKey.encoding = OIC_ENCODING_RAW;
+
OicSecCred_t* cred = NULL;
int dtlsRes = DeriveCryptoKeyFromPassword((const unsigned char *)pin, pinSize, rownerID->id,
UUID_LENGTH, PBKDF_ITERATIONS,
CborError cborEncoderResult = CborNoError;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
cborEncoderResult = cbor_encoder_create_map(&encoder, &crlMap, mapSize);
if (OIC_ENCODING_BASE64 == crl->encoding)
{
- size_t outSize = B64DECODE_OUT_SAFESIZE((crl->len + 1));
- uint8_t *out = OICCalloc(1, outSize);
- if (!out)
+ size_t decodeBufferSize = B64DECODE_OUT_SAFESIZE((crl->len + 1));
+ uint8_t *decodeBuffer = OICCalloc(1, decodeBufferSize);
+ if (!decodeBuffer)
{
OIC_LOG(ERROR, TAG, "Can't allocate memory for base64 str");
return;
}
size_t len = 0;
- if(B64_OK == b64Decode((char*)crl->data, crl->len, out, outSize, &len))
+ if(B64_OK == b64Decode((char*)crl->data, crl->len, decodeBuffer, decodeBufferSize, &len))
{
- memcpy(crl->data, out, len);
+ memcpy(crl->data, decodeBuffer, len);
crl->len = (size_t)len;
OIC_LOG (ERROR, TAG, "Crl successfully decoded to base64.");
{
OIC_LOG (ERROR, TAG, "Base64 decoding failed.");
}
- OICFree(out);
+
+ OICFree(decodeBuffer);
}
out->len = 0;
OCDevAddr endpoint;
memcpy(&endpoint, &clientResponse->devAddr, sizeof(OCDevAddr));
- OCStackResult res = addDev(&g_dp_discover, &endpoint,
- clientResponse->connType, pconf);
+ res = addDev(&g_dp_discover, &endpoint, clientResponse->connType, pconf);
DeletePconfBinData(pconf);
if (OC_STACK_OK != res)
{
return OC_STACK_KEEP_TRANSACTION;
}
-
char rsrc_uri[MAX_URI_LENGTH+1] = {0};
int wr_len = snprintf(rsrc_uri, sizeof(rsrc_uri), "%s?%s=%s",
OC_RSRVD_WELL_KNOWN_URI, OC_RSRVD_RESOURCE_TYPE, OIC_RSRC_TYPE_SEC_DPAIRING);
cbData.cb = &DirectPairingPortDiscoveryHandler;
cbData.context = NULL;
cbData.cd = NULL;
- OCStackResult ret = OCDoResource(NULL, OC_REST_DISCOVER, query, 0, 0,
+ res = OCDoResource(NULL, OC_REST_DISCOVER, query, 0, 0,
clientResponse->connType, OC_LOW_QOS, &cbData, NULL, 0);
- if(OC_STACK_OK != ret)
+ if(OC_STACK_OK != res)
{
OIC_LOG(ERROR, TAG, "Failed to Secure Port Discovery");
return OC_STACK_KEEP_TRANSACTION;
int64_t cborEncoderResult = CborNoError;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
cborEncoderResult = cbor_encoder_create_map(&encoder, &doxmMap, CborIndefiniteLength);
subOwner = NULL;
LL_FOREACH(doxm->subOwners, subOwner)
{
- char* strUuid = NULL;
- ret = ConvertUuidToStr(&subOwner->uuid, &strUuid);
+ char* strSubOwnerUuid = NULL;
+ ret = ConvertUuidToStr(&subOwner->uuid, &strSubOwnerUuid);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret , ERROR);
- cborEncoderResult = cbor_encode_text_string(&subOwners, strUuid, strlen(strUuid));
- OICFree(strUuid);
+ cborEncoderResult = cbor_encode_text_string(&subOwners, strSubOwnerUuid, strlen(strSubOwnerUuid));
+ OICFree(strSubOwnerUuid);
VERIFY_CBOR_SUCCESS(TAG, cborEncoderResult, "Failed Adding SubOwnerId Value");
}
cborEncoderResult = cbor_encoder_close_container(&doxmMap, &subOwners);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Entering oxmType Array.")
int i = 0;
- size_t len = 0;
+ size_t oxmTypeStrlen = 0;
while (cbor_value_is_valid(&oxmType) && cbor_value_is_text_string(&oxmType))
{
cborFindResult = cbor_value_dup_text_string(&oxmType, &doxm->oxmType[i++],
- &len, NULL);
+ &oxmTypeStrlen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding omxType text string.");
cborFindResult = cbor_value_advance(&oxmType);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Advancing oxmType.");
{
OCStackResult convertRes = OC_STACK_ERROR;
OicSecSubOwner_t* subOwner = NULL;
- char* strUuid = NULL;
+ char* strSubOwnerUuid = NULL;
size_t uuidLen = 0;
- cborFindResult = cbor_value_dup_text_string(&subOwnerCbor, &strUuid, &uuidLen, NULL);
+ cborFindResult = cbor_value_dup_text_string(&subOwnerCbor, &strSubOwnerUuid, &uuidLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding SubOwnerId Value");
subOwner = (OicSecSubOwner_t*)OICCalloc(1, sizeof(OicSecSubOwner_t));
VERIFY_NOT_NULL(TAG, subOwner, ERROR);
- convertRes = ConvertStrToUuid(strUuid, &subOwner->uuid);
+ convertRes = ConvertStrToUuid(strSubOwnerUuid, &subOwner->uuid);
VERIFY_SUCCESS(TAG, OC_STACK_OK == convertRes, ERROR);
subOwner->status = MOT_STATUS_DONE;
LL_APPEND(doxm->subOwners, subOwner);
}
uint8_t pairingPSK[OWNER_PSK_LENGTH_128] = {0};
- OicSecKey_t pairingKey = {pairingPSK, OWNER_PSK_LENGTH_128, OIC_ENCODING_RAW};
+ OicSecKey_t pairingKey;
+ memset(&pairingKey, 0, sizeof(pairingKey));
+ pairingKey.data = pairingPSK;
+ pairingKey.len = OWNER_PSK_LENGTH_128;
+ pairingKey.encoding = OIC_ENCODING_RAW;
//Generating PairingPSK using OwnerPSK scheme
CAResult_t pskRet = CAGenerateOwnerPSK((const CAEndpoint_t *)endpoint,
uint8_t mapSize = DPAIR_MAP_SIZE;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
cborEncoderResult = cbor_encoder_create_map(&encoder, &dpairMap, mapSize);
#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
// Add temporary psk
- OCStackResult res;
+ OCStackResult result;
OicUuid_t subjectId = {.id={0}};
- res = AddTmpPskWithPIN(&gDpair->pdeviceID,
+ result = AddTmpPskWithPIN(&gDpair->pdeviceID,
SYMMETRIC_PAIR_WISE_KEY,
(char*)pconf->pin.val, DP_PIN_LENGTH,
&gDpair->rownerID, &subjectId);
- if(res != OC_STACK_OK ||
+ if(result != OC_STACK_OK ||
memcmp(&gDpair->pdeviceID, &subjectId, sizeof(OicUuid_t)))
{
- OIC_LOG_V(ERROR, TAG, "Failed to save the temporal PSK : %d", res);
+ OIC_LOG_V(ERROR, TAG, "Failed to save the temporal PSK : %d", result);
goto exit;
}
{
res = CBORPayloadToDpair(payload, size, &newDpair);
}
-
}
else
{
// Check if valid Put request
VERIFY_SUCCESS(TAG, PRM_NOT_ALLOWED == newDpair->spm, ERROR);
- const OicSecPconf_t *pconf = GetPconfResourceData();
- VERIFY_NOT_NULL(TAG, pconf, ERROR);
+ const OicSecPconf_t *secPconf = GetPconfResourceData();
+ VERIFY_NOT_NULL(TAG, secPconf, ERROR);
#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
OCServerRequest * request = (OCServerRequest *)ehRequest->requestHandle;
//Generate new credential
OIC_LOG_V(INFO, TAG, "SavePairingPSK for %s(%d)", request->devAddr.addr,
request->devAddr.port);
- OCStackResult res = SavePairingPSK(&request->devAddr, &newDpair->pdeviceID,
- (OicUuid_t *)&pconf->rownerID, true);
- VERIFY_SUCCESS(TAG, OC_STACK_OK == res, ERROR);
+ OCStackResult result = SavePairingPSK(&request->devAddr, &newDpair->pdeviceID,
+ (OicUuid_t *)&secPconf->rownerID, true);
+ VERIFY_SUCCESS(TAG, OC_STACK_OK == result, ERROR);
#endif // __WITH_DTLS__ or __WITH_TLS__
//Generate new acl
OicSecPdAcl_t *pdAcl;
- LL_FOREACH(pconf->pdacls, pdAcl)
+ LL_FOREACH(secPconf->pdacls, pdAcl)
{
OicSecAcl_t* acl = (OicSecAcl_t*)OICCalloc(1, sizeof(OicSecAcl_t));
VERIFY_NOT_NULL(TAG, acl, ERROR);
case CA_DTLS_PSK_KEY:
{
OicUuid_t uuid;
- memset(&uuid, 0x00, sizeof(uuid));
- OICStrcpy(uuid.id, sizeof(uuid.id), WILDCARD_SUBJECT_ID.id);
+ memcpy(&uuid, &WILDCARD_SUBJECT_ID, sizeof(uuid));
//Load PreConfigured-PIN
const OicSecCred_t* cred = GetCredResourceData(&uuid);
return ret;
}
- if(B64_OK != b64Decode((char*)cred->privateData.data, cred->privateData.len, pinBuffer, pinBufSize, &pinLength))
+ if(B64_OK != b64Decode((char*)cred->privateData.data, cred->privateData.len, (uint8_t*)pinBuffer, pinBufSize, &pinLength))
{
OIC_LOG (ERROR, TAG, "Failed to base64 decoding.");
OICFree(pinBuffer);
case CA_DTLS_PSK_KEY:
{
OicUuid_t uuid;
- memset(&uuid, 0x00, sizeof(uuid));
- OICStrcpy(uuid.id, sizeof(uuid.id), WILDCARD_SUBJECT_ID.id);
+ memcpy(&uuid, &WILDCARD_SUBJECT_ID, sizeof(uuid));
//Load PreConfigured-PIN
const OicSecCred_t* cred = GetCredResourceData(&uuid);
return ret;
}
- if(B64_OK != b64Decode((char*)cred->privateData.data, cred->privateData.len, pinBuffer, pinBufSize, &pinLength))
+ if(B64_OK != b64Decode((char*)cred->privateData.data, cred->privateData.len, (uint8_t*)pinBuffer, pinBufSize, &pinLength))
{
OIC_LOG (ERROR, TAG, "Failed to base64 decoding.");
OICFree(pinBuffer);
}
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
cborEncoderResult = cbor_encoder_create_map(&encoder, &pconfMap, mapSize);
while (cbor_value_is_valid(&pdAclArray))
{
- CborValue pdAclMap = { .parser = NULL};
+ CborValue pdAclMap = { .parser = NULL };
OicSecPdAcl_t *pdacl = (OicSecPdAcl_t *) OICCalloc(1, sizeof(OicSecPdAcl_t));
VERIFY_NOT_NULL(TAG, pdacl, ERROR);
while (cbor_value_is_valid(&pdAclMap))
{
- char* name = NULL;
- size_t len = 0;
- CborType type = cbor_value_get_type(&pdAclMap);
- if (type == CborTextStringType && cbor_value_is_text_string(&pdAclMap))
+ char* pdAclMapName = NULL;
+ size_t tempLen = 0;
+ CborType pdAclMapType = cbor_value_get_type(&pdAclMap);
+ if ((pdAclMapType == CborTextStringType) && cbor_value_is_text_string(&pdAclMap))
{
- cborFindResult = cbor_value_dup_text_string(&pdAclMap, &name,
- &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&pdAclMap, &pdAclMapName,
+ &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get text");
cborFindResult = cbor_value_advance(&pdAclMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance value");
}
- if (name)
+ if (pdAclMapName)
{
// Resources -- Mandatory
- if (strcmp(name, OIC_JSON_RESOURCES_NAME) == 0 && cbor_value_is_array(&pdAclMap))
+ if (strcmp(pdAclMapName, OIC_JSON_RESOURCES_NAME) == 0 && cbor_value_is_array(&pdAclMap))
{
int i = 0;
CborValue resources = { .parser = NULL };
if (0 == strcmp(OIC_JSON_HREF_NAME, rMapName))
{
// TODO : Need to check data structure of OicSecPdAcl_t based on RAML spec.
- cborFindResult = cbor_value_dup_text_string(&rMap, &pdacl->resources[i++], &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &pdacl->resources[i++], &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding Href Value.");
}
{
// TODO : Need to check data structure of OicSecPdAcl_t and assign based on RAML spec.
char *rtData = NULL;
- cborFindResult = cbor_value_dup_text_string(&rMap, &rtData, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &rtData, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding RT Value.");
OICFree(rtData);
}
{
// TODO : Need to check data structure of OicSecPdAcl_t and assign based on RAML spec.
char *ifData = NULL;
- cborFindResult = cbor_value_dup_text_string(&rMap, &ifData, &len, NULL);
+ cborFindResult = cbor_value_dup_text_string(&rMap, &ifData, &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding IF Value.");
OICFree(ifData);
}
}
// Permissions -- Mandatory
- if (strcmp(name, OIC_JSON_PERMISSION_NAME) == 0 && cbor_value_is_unsigned_integer(&pdAclMap))
+ if (strcmp(pdAclMapName, OIC_JSON_PERMISSION_NAME) == 0 && cbor_value_is_unsigned_integer(&pdAclMap))
{
uint64_t permission = 0;
cborFindResult = cbor_value_get_uint64(&pdAclMap, &permission);
}
// Period -- Not mandatory
- if (strcmp(name, OIC_JSON_PERIODS_NAME) == 0 && cbor_value_is_array(&pdAclMap))
+ if (strcmp(pdAclMapName, OIC_JSON_PERIODS_NAME) == 0 && cbor_value_is_array(&pdAclMap))
{
int i = 0;
CborValue period = { .parser = NULL };
while (cbor_value_is_text_string(&period) && cbor_value_is_text_string(&period))
{
cborFindResult = cbor_value_dup_text_string(&period,
- &pdacl->periods[i++], &len, NULL);
+ &pdacl->periods[i++], &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get text");
cborFindResult = cbor_value_advance(&period);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance");
}
// Recurrence -- Not mandatory
- if (strcmp(name, OIC_JSON_RECURRENCES_NAME) == 0 && cbor_value_is_array(&pdAclMap))
+ if (strcmp(pdAclMapName, OIC_JSON_RECURRENCES_NAME) == 0 && cbor_value_is_array(&pdAclMap))
{
int i = 0;
CborValue recurrences = { .parser = NULL };
while (cbor_value_is_text_string(&recurrences) && cbor_value_is_text_string(&recurrences))
{
cborFindResult = cbor_value_dup_text_string(&recurrences,
- &pdacl->recurrences[i++], &len, NULL);
+ &pdacl->recurrences[i++], &tempLen, NULL);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get value");
cborFindResult = cbor_value_advance(&recurrences);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance");
}
}
- if (type != CborMapType && cbor_value_is_valid(&pdAclMap))
+ if (pdAclMapType != CborMapType && cbor_value_is_valid(&pdAclMap))
{
cborFindResult = cbor_value_advance(&pdAclMap);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance");
cborFindResult = cbor_value_advance(&pdAclArray);
VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance");
}
- OICFree(name);
- name = NULL;
+ OICFree(pdAclMapName);
+ pdAclMapName = NULL;
}
pdacl->next = NULL;
if (headPdacl == NULL)
{
gPconf = GetPconfDefault();
- // device id from doxm
+ // Device id from doxm
OicUuid_t deviceId = {.id = {0}};
- OCStackResult ret = GetDoxmDeviceID( &deviceId);
+ ret = GetDoxmDeviceID(&deviceId);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret, ERROR);
memcpy(&gPconf->deviceID, &deviceId, sizeof(OicUuid_t));
}
int64_t cborEncoderResult = CborNoError;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
if (false == writableOnly)
return false;
}
+#ifdef _MSC_VER
+ // The strings below are const but they are also marked as extern so they cause warnings.
+#pragma warning(push)
+#pragma warning(disable:4204)
+#endif
const char *rsrcs[] = {
OIC_RSRC_SVC_URI,
OIC_RSRC_AMACL_URI,
OC_RSRVD_PROV_CRL_URL
};
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
// Remove query from Uri for resource string comparison
size_t uriLen = strlen(uri);
char *query = strchr (uri, '?');
const char * OIC_JSON_REVOCATION_STATUS_NAME = "revstat";
const char * OIC_JSON_SERVICE_DEVICE_ID = "svcdid";
const char * OIC_JSON_SERVICE_TYPE = "svct";
-const char* OIC_JSON_VALIDITY_NAME = "validity";
+const char * OIC_JSON_VALIDITY_NAME = "validity";
const char * OIC_JSON_PERIOD_NAME = "period";
const char * OIC_JSON_PERIODS_NAME = "prds";
const char * OIC_JSON_CRMS_NAME = "crms";
{
int yyyy = yy + TM_BASE_YEAR;
- bool bLeap = false;
if (yyyy % 100 == 0)
{
return yyyy % 400 == 0;
CborEncoder svcArray;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
LL_APPEND(gSvc, newSvc);
// Convert SVC data into JSON for update to persistent storage
- size_t size = 0;
+ size_t cborSize = 0;
uint8_t *cborPayload = NULL;
- res = SVCToCBORPayload(gSvc, &cborPayload, &size);
+ res = SVCToCBORPayload(gSvc, &cborPayload, &cborSize);
if (cborPayload && OC_STACK_OK == res &&
- UpdateSecureResourceInPS(OIC_JSON_SVC_NAME, cborPayload, size) == OC_STACK_OK)
+ UpdateSecureResourceInPS(OIC_JSON_SVC_NAME, cborPayload, cborSize) == OC_STACK_OK)
{
ehRet = OC_EH_CHANGED;
}
char* strUuid = NULL;
uint8_t *outPayload = (uint8_t *)OICCalloc(1, cborLen);
- VERIFY_NOT_NULL(TAG, outPayload, ERROR);
+ VERIFY_NOT_NULL_RETURN(TAG, outPayload, ERROR, OC_STACK_ERROR);
+
cbor_encoder_init(&encoder, outPayload, cborLen, 0);
cborEncoderResult |= cbor_encoder_create_map(&encoder, &verMap, mapSize);
jsonObj = cJSON_GetObjectItem(jsonAcl, OIC_JSON_PERMISSION_NAME);
VERIFY_NOT_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
- ace->permission = jsonObj->valueint;
+ VERIFY_SUCCESS(TAG, jsonObj->valueint <= UINT16_MAX, ERROR);
+ ace->permission = (uint16_t)jsonObj->valueint;
//Validity -- Not Mandatory
cJSON *jsonValidityObj = cJSON_GetObjectItem(jsonAcl, OIC_JSON_VALIDITY_NAME);
VERIFY_NOT_NULL(TAG, validity->recurrences, ERROR);
cJSON *jsonRecur = NULL;
- for(size_t i = 0; i < validity->recurrenceLen; i++)
+ for(size_t j = 0; j < validity->recurrenceLen; j++)
{
// Needs to be removed once IOT-1746 is resolved.
#ifdef _MSC_VER
#pragma warning(suppress : 4267)
- jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+ jsonRecur = cJSON_GetArrayItem(jsonRecurObj, j);
#else
- jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+ jsonRecur = cJSON_GetArrayItem(jsonRecurObj, j);
#endif
VERIFY_NOT_NULL(TAG, jsonRecur, ERROR);
- validity->recurrences[i] = OICStrdup(jsonRecur->valuestring);
- VERIFY_NOT_NULL(TAG, validity->recurrences[i], ERROR);
+ validity->recurrences[j] = OICStrdup(jsonRecur->valuestring);
+ VERIFY_NOT_NULL(TAG, validity->recurrences[j], ERROR);
}
}
}
if(jsonObj)
{
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
- cred->credId = jsonObj->valueint;
+ VERIFY_SUCCESS(TAG, jsonObj->valueint <= UINT16_MAX, ERROR);
+ cred->credId = (uint16_t)jsonObj->valueint;
}
//subject -- Mandatory