From f182119e571a1b520b4e5ef4ee5e5b5cd243b931 Mon Sep 17 00:00:00 2001 From: Chul Lee Date: Wed, 22 Jun 2016 12:40:21 +0900 Subject: [PATCH] Remove the endianness dependency in cbor conversion. A similar bug reported from https://gerrit.iotivity.org/gerrit/#/c/8755/ Change-Id: I631bab77f7486f1f45eaff96c67d39606e37c6b6 Signed-off-by: Chul Lee Reviewed-on: https://gerrit.iotivity.org/gerrit/8829 Tested-by: jenkins-iotivity Reviewed-by: Hauke Mehrtens Reviewed-by: Randeep Singh (cherry picked from commit 24474a8d2555229efb425b6cb63e19b3279ba810) Reviewed-on: https://gerrit.iotivity.org/gerrit/9053 --- resource/csdk/security/src/credresource.c | 8 ++++++-- resource/csdk/security/src/pconfresource.c | 5 +++-- resource/csdk/stack/src/ocpayloadparse.c | 8 ++++++-- 3 files changed, 15 insertions(+), 6 deletions(-) --- a/resource/csdk/security/src/credresource.c +++ b/resource/csdk/security/src/credresource.c @@ -435,8 +435,10 @@ OCStackResult CBORPayloadToCred(const ui //credid if (strcmp(name, OIC_JSON_CREDID_NAME) == 0) { - cborFindResult = cbor_value_get_uint64(&credMap, (uint64_t *) &cred->credId); + uint64_t credId = 0; + cborFindResult = cbor_value_get_uint64(&credMap, &credId); VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding CredId."); + cred->credId = (uint16_t)credId; } // subjectid if (strcmp(name, OIC_JSON_SUBJECTID_NAME) == 0) @@ -451,8 +453,10 @@ OCStackResult CBORPayloadToCred(const ui // credtype if (strcmp(name, OIC_JSON_CREDTYPE_NAME) == 0) { - cborFindResult = cbor_value_get_uint64(&credMap, (uint64_t *) &cred->credType); + uint64_t credType = 0; + cborFindResult = cbor_value_get_uint64(&credMap, &credType); VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding CredType."); + cred->credType = (OicSecCredType_t)credType; } // privatedata if (strcmp(name, OIC_JSON_PRIVATEDATA_NAME) == 0) --- a/resource/csdk/security/src/pconfresource.c +++ b/resource/csdk/security/src/pconfresource.c @@ -642,8 +642,9 @@ OCStackResult CBORPayloadToPconf(const u // Permissions -- Mandatory if (strcmp(name, OIC_JSON_PERMISSION_NAME) == 0) { - cborFindResult = cbor_value_get_uint64(&pdAclMap, - (uint64_t *) &pdacl->permission); + uint64_t permission = 0; + cborFindResult = cbor_value_get_uint64(&pdAclMap, &permission); + pdacl->permission = (uint16_t)permission; VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get value"); } --- a/resource/csdk/stack/src/ocpayloadparse.c +++ b/resource/csdk/stack/src/ocpayloadparse.c @@ -1169,17 +1169,21 @@ static OCStackResult OCParsePresencePayl if (cbor_value_is_map(rootValue)) { CborValue curVal; + uint64_t temp = 0; // Sequence Number CborError err = cbor_value_map_find_value(rootValue, OC_RSRVD_NONCE, &curVal); VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding nonce tag"); - err = cbor_value_get_uint64(&curVal, (uint64_t *)&payload->sequenceNumber); + err = cbor_value_get_uint64(&curVal, &temp); + payload->sequenceNumber = (uint32_t)temp; VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding nonce value"); // Max Age err = cbor_value_map_find_value(rootValue, OC_RSRVD_TTL, &curVal); VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding ttl tag"); - err = cbor_value_get_uint64(&curVal, (uint64_t *)&payload->maxAge); + temp = 0; + err = cbor_value_get_uint64(&curVal, &temp); + payload->maxAge = (uint32_t)temp; VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding ttl value"); // Trigger