Modify SRPSaveTrustCertChain
authorjs126.lee <js126.lee@samsung.com>
Mon, 19 Sep 2016 12:00:03 +0000 (21:00 +0900)
committerRandeep Singh <randeep.s@samsung.com>
Wed, 21 Sep 2016 06:08:22 +0000 (06:08 +0000)
When saved CertCahin as PEM format in SVR_DB file, null termination is required.

Change-Id: Icdb15c447f91c42b98a665ed82c169052245e61e
Signed-off-by: js126.lee <js126.lee@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11939
Reviewed-by: Jihun Ha <jihun.ha@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
resource/csdk/security/provisioning/sample/cloudClient.c
resource/csdk/security/provisioning/src/secureresourceprovider.c

index d3a1aa0..7659eca 100644 (file)
@@ -224,8 +224,8 @@ static int saveTrustCert(void)
         size_t fsize;
         if (fseeko(fp, 0, SEEK_END) == 0 && (fsize = ftello(fp)))
         {
-            trustCertChainArray.data = OICCalloc(1, fsize+1);
-            trustCertChainArray.len = fsize+1;
+            trustCertChainArray.data = OICCalloc(1, fsize);
+            trustCertChainArray.len = fsize;
             if (NULL == trustCertChainArray.data)
             {
                 OIC_LOG(ERROR,TAG,"OICCalloc");
index 8bcfebd..c030075 100644 (file)
@@ -756,10 +756,19 @@ OCStackResult SRPSaveTrustCertChain(uint8_t *trustCertChain, size_t chainSize,
 
     cred->credType = SIGNED_ASYMMETRIC_KEY;
 
-    cred->optionalData.data = (uint8_t *)OICCalloc(1, chainSize);
-    VERIFY_NON_NULL(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY);
+    if (encodingType == OIC_ENCODING_PEM)
+    {
+        cred->optionalData.data = (uint8_t *)OICCalloc(1, chainSize + 1);
+        VERIFY_NON_NULL(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY);
+        cred->optionalData.len = chainSize + 1;
+    }
+    else
+    {
+        cred->optionalData.data = (uint8_t *)OICCalloc(1, chainSize);
+        VERIFY_NON_NULL(TAG, cred->optionalData.data, ERROR, OC_STACK_NO_MEMORY);
+        cred->optionalData.len = chainSize;
+    }
     memcpy(cred->optionalData.data, trustCertChain, chainSize);
-    cred->optionalData.len = chainSize;
     cred->optionalData.encoding = encodingType;
 
     res = AddCredential(cred);