Removed memory leaks in CA Layer
authorhyuna0213.jo <hyuna0213.jo@samsung.com>
Tue, 8 Sep 2015 07:33:06 +0000 (16:33 +0900)
committerJon A. Cruz <jonc@osg.samsung.com>
Wed, 9 Sep 2015 19:28:58 +0000 (19:28 +0000)
These memory leaks are reported by Valgrind.
The blockwise-transfer was not properly free the memory
that was allocated.

Change-Id: Ibfefc94879fc31f562139e0bc68b53b4a3b34ff8
Signed-off-by: hyuna0213.jo <hyuna0213.jo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/2400
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jaehong Jo <jaehong.jo@samsung.com>
Reviewed-by: Erich Keane <erich.keane@intel.com>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
resource/csdk/connectivity/src/cablockwisetransfer.c

index ebf02b6..edbcdb1 100644 (file)
@@ -813,6 +813,7 @@ CAResult_t CASetNextBlockOption1(coap_pdu_t *pdu, const CAEndpoint_t *endpoint,
             CADestroyBlockID(blockDataID);
             return CA_STATUS_FAILED;
         }
+        CADestroyDataSet(data);
     }
 
     // update BLOCK OPTION1 type
@@ -989,6 +990,7 @@ CAResult_t CASetNextBlockOption2(coap_pdu_t *pdu, const CAEndpoint_t *endpoint,
             CADestroyBlockID(blockDataID);
             return CA_STATUS_FAILED;
         }
+        CADestroyDataSet(data);
     }
 
     // set Block Option Type
@@ -2484,6 +2486,8 @@ CABlockData_t *CACreateNewBlockData(const CAData_t *sendData)
     {
         OIC_LOG(ERROR, TAG, "blockId is null");
         CADestroyBlockID(blockDataID);
+        CADestroyDataSet(data->sentData);
+        OICFree(data);
         return NULL;
     }
     data->blockDataId = blockDataID;
@@ -2495,6 +2499,7 @@ CABlockData_t *CACreateNewBlockData(const CAData_t *sendData)
     {
         OIC_LOG(ERROR, TAG, "add has failed");
         CADestroyBlockID(data->blockDataId);
+        CADestroyDataSet(data->sentData);
         OICFree(data);
         ca_mutex_unlock(g_context.blockDataListMutex);
         return NULL;
@@ -2531,8 +2536,9 @@ CAResult_t CARemoveBlockDataFromList(const CABlockDataID_t *blockID)
             {
                 CADestroyDataSet(currData->sentData);
             }
-            OICFree(currData->payload);
             CADestroyBlockID(currData->blockDataId);
+            OICFree(currData->payload);
+            OICFree(currData);
             ca_mutex_unlock(g_context.blockDataListMutex);
             return CA_STATUS_OK;
         }