Commit 8141de88 authored by Kevin Kane's avatar Kevin Kane Committed by Phil Coval

[IOT-1569] Use OICMalloc/OICFree consistently

Lingering and mixed uses of malloc/free exist throughout
IoTivity. Some buffers allocated with malloc are later freed
with OICFree; this is dangerous in case the implementation of
OICMalloc/OICFree ever changes.

This change harmonizes the code to use the OIC versions to
ensure code is always using the same heap allocation and free
functions with two exceptions:

* Sample code continues to use malloc/free; samples should not
refer to internal functions.
* The oc_logger module also still uses malloc/free; oic_malloc
calls oc_logger when operating in ENABLE_MALLOC_DEBUG mode, and
could result in a circular dependency if changed over.

Change-Id: Icd47243eec33500fe7fcd7d5d79ddf2128a9e717
Signed-off-by: default avatarKevin Kane <kkane@microsoft.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/14623Tested-by: default avatarjenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: default avatarMike Fenelon <mike.fenelon@microsoft.com>
Reviewed-by: default avatarDan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: default avatarPhil Coval <philippe.coval@osg.samsung.com>
parent 290d5802
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "cautilinterface.h" #include "cautilinterface.h"
#include "cacommon.h" #include "cacommon.h"
#include "oic_string.h" #include "oic_string.h"
#include "oic_malloc.h"
#define CA_TRANSPORT_ADAPTER_SCOPE 1000 #define CA_TRANSPORT_ADAPTER_SCOPE 1000
...@@ -343,7 +344,7 @@ TEST_F(CATests, SendResponseTestWithInvalidCode) ...@@ -343,7 +344,7 @@ TEST_F(CATests, SendResponseTestWithInvalidCode)
memset(&responseData, 0, sizeof(CAInfo_t)); memset(&responseData, 0, sizeof(CAInfo_t));
responseData.type = CA_MSG_RESET; responseData.type = CA_MSG_RESET;
responseData.messageId = 1; responseData.messageId = 1;
responseData.payload = (CAPayload_t)malloc(sizeof("response payload")); responseData.payload = (CAPayload_t)OICMalloc(sizeof("response payload"));
responseData.dataType = CA_RESPONSE_DATA; responseData.dataType = CA_RESPONSE_DATA;
EXPECT_TRUE(responseData.payload != NULL); EXPECT_TRUE(responseData.payload != NULL);
...@@ -362,7 +363,7 @@ TEST_F(CATests, SendResponseTestWithInvalidCode) ...@@ -362,7 +363,7 @@ TEST_F(CATests, SendResponseTestWithInvalidCode)
CADestroyToken(tempToken); CADestroyToken(tempToken);
CADestroyEndpoint(tempRep); CADestroyEndpoint(tempRep);
free(responseData.payload); OICFree(responseData.payload);
tempRep = NULL; tempRep = NULL;
} }
} }
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
#include "uqueue.h" #include "uqueue.h"
#include "oic_malloc.h"
class UQueueF : public testing::Test { class UQueueF : public testing::Test {
public: public:
UQueueF() : UQueueF() :
...@@ -47,7 +49,7 @@ protected: ...@@ -47,7 +49,7 @@ protected:
u_queue_message_t *CreateQueueMessage(void *data, uint32_t size) u_queue_message_t *CreateQueueMessage(void *data, uint32_t size)
{ {
u_queue_message_t *message = (u_queue_message_t *) malloc(sizeof(u_queue_message_t)); u_queue_message_t *message = (u_queue_message_t *) OICMalloc(sizeof(u_queue_message_t));
if (NULL == message) if (NULL == message)
{ {
return NULL; return NULL;
......
...@@ -280,7 +280,7 @@ OCStringLL* OCCreateOCStringLL(const char* text); ...@@ -280,7 +280,7 @@ OCStringLL* OCCreateOCStringLL(const char* text);
/** /**
* This function creates a string from a list (with separated contents if several) * This function creates a string from a list (with separated contents if several)
* @param ll Pointer to list * @param ll Pointer to list
* @return newly allocated string * @return newly allocated string. Caller takes ownership and must later free this memory with OICFree.
* @note separator is ',' (according to rfc4180) * @note separator is ',' (according to rfc4180)
**/ **/
char* OCCreateString(const OCStringLL* ll); char* OCCreateString(const OCStringLL* ll);
......
...@@ -1501,7 +1501,7 @@ char* OCCreateString(const OCStringLL* ll) ...@@ -1501,7 +1501,7 @@ char* OCCreateString(const OCStringLL* ll)
len += strlen(it->value) + 1; len += strlen(it->value) + 1;
} }
len--; // remove trailing separator (just added above) len--; // remove trailing separator (just added above)
str = (char*) malloc(len + 1); str = (char*) OICMalloc(len + 1);
if (!str) if (!str)
{ {
return NULL; return NULL;
...@@ -1515,7 +1515,7 @@ char* OCCreateString(const OCStringLL* ll) ...@@ -1515,7 +1515,7 @@ char* OCCreateString(const OCStringLL* ll)
count = snprintf(pos, len + 1, "%s", it->value); count = snprintf(pos, len + 1, "%s", it->value);
if ((size_t)count < sublen) if ((size_t)count < sublen)
{ {
free(str); OICFree(str);
return NULL; return NULL;
} }
len -= sublen; len -= sublen;
......
...@@ -811,7 +811,7 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc) ...@@ -811,7 +811,7 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc)
goto exit; goto exit;
} }
actionTypeStr = (char *)malloc(1024); actionTypeStr = (char *)OICMalloc(1024);
if(actionTypeStr != NULL) if(actionTypeStr != NULL)
{ {
sprintf(actionTypeStr, "%ld %u", actionset->timesteps, actionset->type); sprintf(actionTypeStr, "%ld %u", actionset->timesteps, actionset->type);
...@@ -821,11 +821,11 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc) ...@@ -821,11 +821,11 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc)
remaining -= strlen(actionTypeStr); remaining -= strlen(actionTypeStr);
strncat(temp, ACTION_DELIMITER, strlen(ACTION_DELIMITER)); strncat(temp, ACTION_DELIMITER, strlen(ACTION_DELIMITER));
remaining -= strlen(ACTION_DELIMITER); remaining -= strlen(ACTION_DELIMITER);
free(actionTypeStr); OICFree(actionTypeStr);
} }
else else
{ {
free(actionTypeStr); OICFree(actionTypeStr);
res = OC_STACK_ERROR; res = OC_STACK_ERROR;
goto exit; goto exit;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment