Modify the incorrect UUID parse in 'GetSubjectFromQueryString' API.
authorChul Lee <chuls.lee@samsung.com>
Thu, 26 May 2016 04:52:09 +0000 (13:52 +0900)
committerRandeep Singh <randeep.s@samsung.com>
Tue, 7 Jun 2016 03:24:46 +0000 (03:24 +0000)
[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 <chuls.lee@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/8343
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
resource/csdk/security/src/aclresource.c
resource/csdk/security/unittest/aclresourcetest.cpp

index d2b9f4b..c189447 100644 (file)
@@ -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;
         }
     }
index 558406a..d0adee4 100644 (file)
@@ -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);