From: Chul Lee Date: Thu, 26 May 2016 04:52:09 +0000 (+0900) Subject: Modify the incorrect UUID parse in 'GetSubjectFromQueryString' API. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56d85990ff6044498b2f3b428b1ff9df29226e0c;p=contrib%2Fiotivity.git Modify the incorrect UUID parse in 'GetSubjectFromQueryString' API. [NOTE] GetSubjectFromQueryString API will be invoked when received REST requests to retrieves the 'subject' field. BTW, Since the subject of query is the string type, The subject field should not be copied directly. it should be converted as OicUuid_t. [Patch #1] : Intial upload [Patch #2] : Update unittest Change-Id: I772ee91a9061ac2c9762ed09c5d09c5e90be90ff Signed-off-by: Chul Lee Reviewed-on: https://gerrit.iotivity.org/gerrit/8343 Tested-by: jenkins-iotivity Reviewed-by: Randeep Singh --- diff --git a/resource/csdk/security/src/aclresource.c b/resource/csdk/security/src/aclresource.c index d2b9f4b..c189447 100644 --- a/resource/csdk/security/src/aclresource.c +++ b/resource/csdk/security/src/aclresource.c @@ -45,6 +45,7 @@ #define TAG "SRM-ACL" #define NUMBER_OF_SEC_PROV_RSCS 4 #define NUMBER_OF_DEFAULT_SEC_RSCS 2 +#define STRING_UUID_SIZE (UUID_LENGTH * 2 + 5) static const uint8_t ACL_MAP_SIZE = 2; static const uint8_t ACL_ACLIST_MAP_SIZE = 1; @@ -833,8 +834,11 @@ static bool GetSubjectFromQueryString(const char *query, OicUuid_t *subject) { if (strncasecmp((char *) parseIter.attrPos, OIC_JSON_SUBJECTID_NAME, parseIter.attrLen) == 0) { + char strUuid[STRING_UUID_SIZE] = {0}; VERIFY_SUCCESS(TAG, 0 != parseIter.valLen, ERROR); - memcpy(subject->id, parseIter.valPos, parseIter.valLen); + memcpy(strUuid, parseIter.valPos, parseIter.valLen); + OCStackResult res = ConvertStrToUuid(strUuid, subject); + VERIFY_SUCCESS(TAG, OC_STACK_OK == res, ERROR); return true; } } diff --git a/resource/csdk/security/unittest/aclresourcetest.cpp b/resource/csdk/security/unittest/aclresourcetest.cpp index 558406a..d0adee4 100644 --- a/resource/csdk/security/unittest/aclresourcetest.cpp +++ b/resource/csdk/security/unittest/aclresourcetest.cpp @@ -84,7 +84,7 @@ TEST(ACLResourceTest, CBORDefaultACLConversion) ASSERT_TRUE(convertedAcl != NULL); EXPECT_EQ(defaultAcl->resourcesLen, convertedAcl->resourcesLen); - for(int i = 0; i < convertedAcl->resourcesLen; i++) + for(size_t i = 0; i < convertedAcl->resourcesLen; i++) { EXPECT_EQ(0, strcmp(defaultAcl->resources[i], convertedAcl->resources[i])); } @@ -364,7 +364,7 @@ TEST(ACLResourceTest, ACLDeleteWithSingleResourceTest) // Create Entity Handler DELETE request ehReq.method = OC_REST_DELETE; - char query[] = "subjectuuid=2222222222222222;resources=/a/led"; + char query[] = "subjectuuid=32323232-3232-3232-3232-323232323232;resources=/a/led"; ehReq.query = (char *)OICMalloc(strlen(query)+1); ASSERT_TRUE(NULL != ehReq.query); OICStrcpy(ehReq.query, strlen(query)+1, query); @@ -415,7 +415,7 @@ TEST(ACLResourceTest, ACLDeleteWithMultiResourceTest) // Create Entity Handler DELETE request ehReq.method = OC_REST_DELETE; - char query[] = "subjectuuid=2222222222222222;resources=/a/led"; + char query[] = "subjectuuid=32323232-3232-3232-3232-323232323232;resources=/a/led"; ehReq.query = (char *)OICMalloc(strlen(query)+1); ASSERT_TRUE(NULL != ehReq.query); OICStrcpy(ehReq.query, strlen(query)+1, query); @@ -463,7 +463,7 @@ TEST(ACLResourceTest, ACLGetWithQueryTest) //Create Entity Handler GET request wit query ehReq.method = OC_REST_GET; - char query[] = "subjectuuid=2222222222222222;resources=/a/led"; + char query[] = "subjectuuid=32323232-3232-3232-3232-323232323232;resources=/a/led"; ehReq.query = (char*)OICMalloc(strlen(query)+1); ASSERT_TRUE(NULL != ehReq.query); OICStrcpy(ehReq.query, strlen(query)+1, query);