From a88c448621f464b32fec5cf6cb14a3ed383eb76a Mon Sep 17 00:00:00 2001 From: Kyungsun Cho Date: Wed, 9 Mar 2016 18:41:41 +0900 Subject: [PATCH] Fixed bugs reported SVase checking on |provisioningclient| Change-Id: I7f0c7fc2ecd6f1fa410f40fbe96dc3226531e92c Signed-off-by: Kyungsun Cho Reviewed-on: https://gerrit.iotivity.org/gerrit/5621 Reviewed-by: dongik Lee Reviewed-by: Randeep Singh Tested-by: Randeep Singh --- .../provisioning/sample/provisioningclient.c | 31 ++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/resource/csdk/security/provisioning/sample/provisioningclient.c b/resource/csdk/security/provisioning/sample/provisioningclient.c index ee44606..7e6919d 100644 --- a/resource/csdk/security/provisioning/sample/provisioningclient.c +++ b/resource/csdk/security/provisioning/sample/provisioningclient.c @@ -560,10 +560,13 @@ static int provisionAcl(void) // for error checking, the return value saved and printed g_doneCB = false; printf(" Provisioning Selected ACL..\n"); - OCStackResult rst = - OCProvisionACL((void*) g_ctx, - getDevInst((const OCProvisionDev_t*) g_own_list, dev_num), - acl, provisionAclCB); + OCProvisionDev_t* dev = getDevInst((const OCProvisionDev_t*) g_own_list, dev_num); + if(!dev) + { + OIC_LOG(ERROR, TAG, "provisionAcl: device instance empty"); + goto PVACL_ERROR; + } + OCStackResult rst = OCProvisionACL((void*) g_ctx, dev, acl, provisionAclCB); if(OC_STACK_OK != rst) { OIC_LOG_V(ERROR, TAG, "OCProvisionACL API error: %d", rst); @@ -783,7 +786,7 @@ static OicSecAcl_t* createAcl(const int dev_num) for( ; 0x20<=getchar(); ); // for removing overflow garbages // '0x20<=code' is character region } - if(num && g_own_cnt>=num && dev_num!=num) + if(0=num && dev_num!=num) { break; } @@ -805,12 +808,11 @@ static OicSecAcl_t* createAcl(const int dev_num) // '16' is |ACL_RESRC_MAX_NUM| for(int ret=0; 1!=ret; ) { - ret = scanf("%zu", &acl->resourcesLen); + ret = scanf("%d", &num); for( ; 0x20<=getchar(); ); // for removing overflow garbages // '0x20<=code' is character region } - if(acl->resourcesLen && ACL_RESRC_MAX_NUM>=acl->resourcesLen) - // |acl->resourcesLen| is unsigned + if(0=num) { break; } @@ -821,15 +823,15 @@ static OicSecAcl_t* createAcl(const int dev_num) // enter actually each 'accessed' |resources| name printf(" Enter Each Accessed Resource Name (each under 128 char)\n"); // '128' is ACL_RESRC_MAX_LEN - num = acl->resourcesLen; - acl->resources = (char**) OICCalloc(num, sizeof(char*)); + acl->resourcesLen = (unsigned) num; + acl->resources = (char**) OICCalloc(acl->resourcesLen, sizeof(char*)); if(!acl->resources) { OIC_LOG(ERROR, TAG, "createAcl: OICCalloc error return"); goto CRACL_ERROR; } char rsrc_in[ACL_RESRC_MAX_LEN+1] = {0}; // '1' for null termination - for(int i=0; num>i; ++i) + for(int i=0; acl->resourcesLen>(unsigned)i; ++i) { printf(" Enter Accessed Resource[%d] Name: ", i+1); for(int ret=0; 1!=ret; ) @@ -881,16 +883,17 @@ static OicSecAcl_t* createAcl(const int dev_num) acl->permission = pmsn; // enter |owner| device number + int own_num = 0; for( ; ; ) { printf(" > [D] Enter Owner Device Number: "); for(int ret=0; 1!=ret; ) { - ret = scanf("%d", &num); + ret = scanf("%d", &own_num); for( ; 0x20<=getchar(); ); // for removing overflow garbages // '0x20<=code' is character region } - if(num && g_own_cnt>=num) + if(0=own_num) { break; } @@ -904,7 +907,7 @@ static OicSecAcl_t* createAcl(const int dev_num) goto CRACL_ERROR; } - dev = getDevInst((const OCProvisionDev_t*)g_own_list, num); + dev = getDevInst((const OCProvisionDev_t*)g_own_list, own_num); if(!dev || !dev->doxm) { OIC_LOG(ERROR, TAG, "createAcl: device instance empty"); -- 2.7.4