[IOT-1699]Fix memory leak on collection
authorbg.chun <bg.chun@samsung.com>
Wed, 21 Dec 2016 02:47:46 +0000 (11:47 +0900)
committerDan Mihai <Daniel.Mihai@microsoft.com>
Wed, 28 Dec 2016 01:32:40 +0000 (01:32 +0000)
Fix memory leak on DefaultCollectionEntityHandler

Change-Id: I4070d3f8feae9596f646ecbc24de471eb99a1e8c
Signed-off-by: bg.chun <bg.chun@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/15859
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
resource/csdk/stack/src/occollection.c

index 8c59c79..6ec6e16 100755 (executable)
@@ -48,6 +48,7 @@ static bool AddRTSBaslinePayload(OCRepPayload **linkArray, int size, OCRepPayloa
         {
             OICFree(rt[l]);
         }
+        OICFree(rt);
     }
 
     for (OCStringLL *rsrcType = (*colPayload)->types; rsrcType; rsrcType = rsrcType->next, arraySize++);
@@ -71,6 +72,7 @@ static bool AddRTSBaslinePayload(OCRepPayload **linkArray, int size, OCRepPayloa
             rts[k++] = OICStrdup(rt[l]);
             OICFree(rt[l]);
         }
+        OICFree(rt);
     }
     for (OCStringLL *rsrcType = (*colPayload)->types; rsrcType; rsrcType = rsrcType->next, size++)
     {
@@ -173,7 +175,7 @@ exit:
     }
     ret = SendResponse(colPayload, ehRequest, collResource, ehResult);
     OIC_LOG_PAYLOAD(DEBUG, (OCPayload *)colPayload);
-
+    OCRepPayloadDestroy(colPayload);
     return ret;
 }
 
@@ -186,16 +188,14 @@ static OCStackResult HandleBatchInterface(OCEntityHandlerRequest *ehRequest)
 
     OCStackResult stackRet = OC_STACK_OK;
     char *storeQuery = NULL;
-    OCRepPayload *payload = OCRepPayloadCreate();
     OCResource *collResource = (OCResource *)ehRequest->resource;
-    VERIFY_PARAM_NON_NULL(TAG, payload, "Failed creating RepPayload");
 
     if (stackRet == OC_STACK_OK)
     {
 
         if (collResource->rsrcChildResourcesHead)
         {
-            storeQuery = OICStrdup(ehRequest->query);
+            storeQuery = ehRequest->query;
             ehRequest->query = NULL;
             OIC_LOG_V(DEBUG, TAG, "Query : %s", ehRequest->query);
         }
@@ -235,12 +235,8 @@ static OCStackResult HandleBatchInterface(OCEntityHandlerRequest *ehRequest)
         }
         ehRequest->resource = (OCResourceHandle) collResource;
     }
-    ehRequest->query = OICStrdup(storeQuery);
-    OICFree(storeQuery);
+    ehRequest->query = storeQuery;
     return stackRet;
-exit:
-    OICFree(storeQuery);
-    return OC_STACK_NO_MEMORY;
 }
 
 OCStackResult DefaultCollectionEntityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest *ehRequest)