From 64c4d5f0b6f67aceda9ab49ad947b9468a34672c Mon Sep 17 00:00:00 2001 From: "js126.lee" Date: Thu, 3 Mar 2016 15:20:30 +0900 Subject: [PATCH] Fix issue related SVACE in C provisioningclient sample - Patch 1; Init. - Patch 2,3: Applying Chul's review comment. - Patch 4: Modify file permission Change-Id: I15f914ef000ac95ca33bdb80ea16a25d15bd14bf Signed-off-by: js126.lee Reviewed-on: https://gerrit.iotivity.org/gerrit/5325 Tested-by: jenkins-iotivity Reviewed-by: Randeep Singh --- .../provisioning/sample/provisioningclient.c | 31 +++++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/resource/csdk/security/provisioning/sample/provisioningclient.c b/resource/csdk/security/provisioning/sample/provisioningclient.c index 1c63d45..ee44606 100644 --- a/resource/csdk/security/provisioning/sample/provisioningclient.c +++ b/resource/csdk/security/provisioning/sample/provisioningclient.c @@ -618,9 +618,16 @@ static int checkLinkedStatus(void) printf(" Checking Selected Link Status on PRVN DB..\n"); OCUuidList_t* dvid_lst = NULL; size_t dvid_cnt = 0; + OCProvisionDev_t* dev = getDevInst((const OCProvisionDev_t*)g_own_list, dev_num); + if(!dev || !dev->doxm) + { + OIC_LOG(ERROR, TAG, "checkLinkedStatus: device instance empty"); + goto CKLST_ERROR; + } + if(OC_STACK_OK != OCGetLinkedStatus( - &getDevInst((const OCProvisionDev_t*) g_own_list, dev_num)->doxm->deviceID, + &dev->doxm->deviceID, &dvid_lst, &dvid_cnt)) // allow empty list { OIC_LOG(ERROR, TAG, "OCGetLinkedStatus API error"); @@ -782,9 +789,14 @@ static OicSecAcl_t* createAcl(const int dev_num) } printf(" Entered Wrong Number. Please Enter Again\n"); } - memcpy(&acl->subject, - &getDevInst((const OCProvisionDev_t*) g_own_list, num)->doxm->deviceID, - UUID_LENGTH); // not need |*sizeof(uint8_t)| + + OCProvisionDev_t* dev = getDevInst((const OCProvisionDev_t*)g_own_list, num); + if(!dev || !dev->doxm) + { + OIC_LOG(ERROR, TAG, "createAcl: device instance empty"); + goto CRACL_ERROR; + } + memcpy(&acl->subject, &dev->doxm->deviceID, UUID_LENGTH); // enter number of |resources| in 'accessed' device for( ; ; ) @@ -891,9 +903,14 @@ static OicSecAcl_t* createAcl(const int dev_num) OIC_LOG(ERROR, TAG, "createAcl: OICCalloc error return"); goto CRACL_ERROR; } - memcpy(acl->owners, - &getDevInst((const OCProvisionDev_t*) g_own_list, num)->doxm->deviceID, - UUID_LENGTH); // not need |*sizeof(uint8_t)| + + dev = getDevInst((const OCProvisionDev_t*)g_own_list, num); + if(!dev || !dev->doxm) + { + OIC_LOG(ERROR, TAG, "createAcl: device instance empty"); + goto CRACL_ERROR; + } + memcpy(acl->owners, &dev->doxm->deviceID, UUID_LENGTH); printf("\n"); return acl; -- 2.7.4