Fix for SVACE defects 33/215633/1
authorsamanway <samanway@samanway.sa.corp.samsungelectronics.net>
Wed, 25 Sep 2019 14:26:12 +0000 (19:56 +0530)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 14 Oct 2019 01:19:09 +0000 (10:19 +0900)
https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/pull/581
(cherry-picked from 0c9a4bdc0e7a2bfd4bbd2168366281b8741c2e29)

Change-Id: Ia5554e93f8b913f10053bf4a09bb3b1bd7dbb8ce
Signed-off-by: samanway-dey <samanway,dey@samsung.com>
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
resource/csdk/stack/src/ocresource.c
resource/csdk/stack/src/ocstack.c
resource/csdk/stack/src/oicgroup.c [changed mode: 0755->0644]
service/notification/src/common/NSConstants.h
service/notification/src/common/NSUtil.c
service/notification/src/provider/NSProviderListener.c
service/notification/src/provider/NSProviderSubscription.c
service/notification/src/provider/NSProviderTopic.c

index 7ffdcc1..bba4dd1 100644 (file)
@@ -362,6 +362,7 @@ static OCStackResult BuildDevicePlatformPayload(const OCResource *resourcePtr, O
         if (!deviceId)
         {
             OIC_LOG(ERROR, TAG, "Failed retrieving device id.");
+            OCPayloadDestroy((OCPayload *)tempPayload);
             return OC_STACK_ERROR;
         }
         OCRepPayloadSetPropString(tempPayload, OC_RSRVD_DEVICE_ID, deviceId);
index 9505f26..5f94a12 100644 (file)
@@ -1864,6 +1864,11 @@ void HandleCAErrorResponse(const CAEndpoint_t *endPoint, const CAErrorInfo_t *er
 
     OIC_LOG(INFO, TAG, "Exit HandleCAErrorResponse");
     OIC_TRACE_END();
+    if(NULL != observer)
+    {
+        OICFree(observer);
+        observer = NULL;
+    }
 }
 
 /*
old mode 100755 (executable)
new mode 100644 (file)
index 5114f41..61c0eaa
@@ -779,8 +779,11 @@ exit:
     OCFREE(desc)
     OCFREE(capa)
     OCFREE(action)
+    if (*set)
+    {
     OCFREE((*set)->actionsetName)
     OCFREE(*set)
+    }
     OCFREE(key)
     OCFREE(value)
     OCFREE(attr)
index ba95e57..8fe4068 100644 (file)
         } \
     }
 
+#define NS_VERIFY_NOT_NULL_EXIT(obj) \
+    { \
+        if (!(obj)) \
+        { \
+            NS_LOG_V(ERROR, "%s : %s is null", __func__, #obj); \
+            goto exit; \
+        } \
+    }
+
 #define NS_VERIFY_NOT_NULL(obj, retVal) \
     { \
         if ((obj) == NULL) \
index 35c1e25..53c62c4 100644 (file)
@@ -291,6 +291,7 @@ NSSyncInfo * NSGetSyncInfo(OCPayload * payload)
     if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_STATE, &state))
     {
         OICFree(retSync);
+        OICFree(providerId);
         return NULL;
     }
 
index 8f6cc9c..bed9ebd 100644 (file)
@@ -110,6 +110,7 @@ OCEntityHandlerResult NSEntityHandlerMessageCb(OCEntityHandlerFlag flag,
                     && strcmp(reqInterface, NS_INTERFACE_READ) != 0)\r
             {\r
                 NS_LOG(ERROR, "Invalid interface");\r
+                NSOICFree(reqInterface);\r
                 return ehResult;\r
             }\r
             ehResult = OC_EH_OK;\r
@@ -185,6 +186,7 @@ OCEntityHandlerResult NSEntityHandlerSyncCb(OCEntityHandlerFlag flag,
                     && strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0)\r
             {\r
                 NS_LOG(ERROR, "Invalid interface");\r
+                NSOICFree(reqInterface);\r
                 return ehResult;\r
             }\r
 \r
@@ -279,6 +281,7 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag,
                     && strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0)\r
             {\r
                 NS_LOG(ERROR, "Invalid interface");\r
+                NSOICFree(reqInterface);\r
                 return ehResult;\r
             }\r
             // send consumer's interesting topic list if consumer id exists\r
index 3d01f3e..a275660 100644 (file)
@@ -144,8 +144,12 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
         NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
         NS_VERIFY_NOT_NULL_V(element);\r
         NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
-        NS_VERIFY_NOT_NULL_V(subData);\r
-\r
+        if (!subData)\r
+        {\r
+            NS_LOG(ERROR, "Memory assignment to subData failed");\r
+            NSOICFree(element);\r
+            return;\r
+        }\r
         OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
         NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id);\r
 \r
@@ -205,7 +209,12 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
         NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
         NS_VERIFY_NOT_NULL_V(element);\r
         NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
-        NS_VERIFY_NOT_NULL_V(subData);\r
+        if (!subData)\r
+        {\r
+            NS_LOG(ERROR, "Memory assignment to subData failed");\r
+            NSOICFree(element);\r
+            return;\r
+        }\r
 \r
         OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
         NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id);\r
index 9a6dee9..b745659 100644 (file)
@@ -306,7 +306,13 @@ NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest)
             NS_LOG_V(DEBUG, "topicState = %d",(int) topics->state);
 
             payloadTopicArray[i] = OCRepPayloadCreate();
-            NS_VERIFY_NOT_NULL(payloadTopicArray[i], NS_ERROR);
+            if (!payloadTopicArray[i])
+            {
+                NS_LOG_V(ERROR, "payloadTopicArray[%d] is NULL", i);
+                NSOICFree(payloadTopicArray);
+                return;
+            }
+
             OCRepPayloadSetPropString(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_NAME,
                     topics->topicName);
             OCRepPayloadSetPropInt(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_SELECTION,
@@ -403,7 +409,7 @@ NSResult NSPostConsumerTopics(OCEntityHandlerRequest * entityHandlerRequest)
         {
             NSCacheTopicSubData * topicSubData = (NSCacheTopicSubData *) OICMalloc(
                     sizeof(NSCacheTopicSubData));
-            NS_VERIFY_NOT_NULL(topicSubData, NS_FAIL);
+            NS_VERIFY_NOT_NULL_EXIT(topicSubData);
 
             OICStrcpy(topicSubData->id, NS_UUID_STRING_SIZE, consumerId);
             topicSubData->topicName = topicName;
@@ -447,6 +453,10 @@ NSResult NSPostConsumerTopics(OCEntityHandlerRequest * entityHandlerRequest)
     NSOICFree(consumerId);
     NS_LOG(DEBUG, "NSPostConsumerTopics() - OUT");
     return NS_OK;
+
+exit:
+    OICFree(topicListPayload);
+    return NS_FAIL;
 }
 
 void * NSTopicSchedule(void * ptr)
@@ -497,7 +507,10 @@ void * NSTopicSchedule(void * ptr)
 
                             if (NSProviderStorageWrite(consumerTopicList, newObj) == NS_OK)
                             {
+                                if(subData)
+                                {
                                 NSSendTopicUpdationToConsumer(subData->id);
+                                }
                                 topicSyncResult->result = NS_OK;
                             }
                         }