From c9c470b7fa5ee700e00daf3d57dce92445714060 Mon Sep 17 00:00:00 2001 From: samanway Date: Wed, 25 Sep 2019 19:56:12 +0530 Subject: [PATCH] Fix for SVACE defects https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/pull/581 (cherry-picked from 0c9a4bdc0e7a2bfd4bbd2168366281b8741c2e29) Change-Id: Ia5554e93f8b913f10053bf4a09bb3b1bd7dbb8ce Signed-off-by: samanway-dey Signed-off-by: DoHyun Pyun --- resource/csdk/stack/src/ocresource.c | 1 + resource/csdk/stack/src/ocstack.c | 5 +++++ resource/csdk/stack/src/oicgroup.c | 3 +++ service/notification/src/common/NSConstants.h | 9 +++++++++ service/notification/src/common/NSUtil.c | 1 + service/notification/src/provider/NSProviderListener.c | 3 +++ .../notification/src/provider/NSProviderSubscription.c | 15 ++++++++++++--- service/notification/src/provider/NSProviderTopic.c | 17 +++++++++++++++-- 8 files changed, 49 insertions(+), 5 deletions(-) mode change 100755 => 100644 resource/csdk/stack/src/oicgroup.c diff --git a/resource/csdk/stack/src/ocresource.c b/resource/csdk/stack/src/ocresource.c index 7ffdcc1..bba4dd1 100644 --- a/resource/csdk/stack/src/ocresource.c +++ b/resource/csdk/stack/src/ocresource.c @@ -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); diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index 9505f26..5f94a12 100644 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -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; + } } /* diff --git a/resource/csdk/stack/src/oicgroup.c b/resource/csdk/stack/src/oicgroup.c old mode 100755 new mode 100644 index 5114f41..61c0eaa --- a/resource/csdk/stack/src/oicgroup.c +++ b/resource/csdk/stack/src/oicgroup.c @@ -779,8 +779,11 @@ exit: OCFREE(desc) OCFREE(capa) OCFREE(action) + if (*set) + { OCFREE((*set)->actionsetName) OCFREE(*set) + } OCFREE(key) OCFREE(value) OCFREE(attr) diff --git a/service/notification/src/common/NSConstants.h b/service/notification/src/common/NSConstants.h index ba95e57..8fe4068 100644 --- a/service/notification/src/common/NSConstants.h +++ b/service/notification/src/common/NSConstants.h @@ -139,6 +139,15 @@ } \ } +#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) \ diff --git a/service/notification/src/common/NSUtil.c b/service/notification/src/common/NSUtil.c index 35c1e25..53c62c4 100644 --- a/service/notification/src/common/NSUtil.c +++ b/service/notification/src/common/NSUtil.c @@ -291,6 +291,7 @@ NSSyncInfo * NSGetSyncInfo(OCPayload * payload) if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_STATE, &state)) { OICFree(retSync); + OICFree(providerId); return NULL; } diff --git a/service/notification/src/provider/NSProviderListener.c b/service/notification/src/provider/NSProviderListener.c index 8f6cc9c..bed9ebd 100644 --- a/service/notification/src/provider/NSProviderListener.c +++ b/service/notification/src/provider/NSProviderListener.c @@ -110,6 +110,7 @@ OCEntityHandlerResult NSEntityHandlerMessageCb(OCEntityHandlerFlag flag, && strcmp(reqInterface, NS_INTERFACE_READ) != 0) { NS_LOG(ERROR, "Invalid interface"); + NSOICFree(reqInterface); return ehResult; } ehResult = OC_EH_OK; @@ -185,6 +186,7 @@ OCEntityHandlerResult NSEntityHandlerSyncCb(OCEntityHandlerFlag flag, && strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0) { NS_LOG(ERROR, "Invalid interface"); + NSOICFree(reqInterface); return ehResult; } @@ -279,6 +281,7 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag, && strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0) { NS_LOG(ERROR, "Invalid interface"); + NSOICFree(reqInterface); return ehResult; } // send consumer's interesting topic list if consumer id exists diff --git a/service/notification/src/provider/NSProviderSubscription.c b/service/notification/src/provider/NSProviderSubscription.c index 3d01f3e..a275660 100644 --- a/service/notification/src/provider/NSProviderSubscription.c +++ b/service/notification/src/provider/NSProviderSubscription.c @@ -144,8 +144,12 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement)); NS_VERIFY_NOT_NULL_V(element); NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData)); - NS_VERIFY_NOT_NULL_V(subData); - + if (!subData) + { + NS_LOG(ERROR, "Memory assignment to subData failed"); + NSOICFree(element); + return; + } OICStrcpy(subData->id, UUID_STRING_SIZE, id); NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id); @@ -205,7 +209,12 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement)); NS_VERIFY_NOT_NULL_V(element); NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData)); - NS_VERIFY_NOT_NULL_V(subData); + if (!subData) + { + NS_LOG(ERROR, "Memory assignment to subData failed"); + NSOICFree(element); + return; + } OICStrcpy(subData->id, UUID_STRING_SIZE, id); NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id); diff --git a/service/notification/src/provider/NSProviderTopic.c b/service/notification/src/provider/NSProviderTopic.c index 9a6dee9..b745659 100644 --- a/service/notification/src/provider/NSProviderTopic.c +++ b/service/notification/src/provider/NSProviderTopic.c @@ -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; } } -- 2.7.4