From a10194cee86244f720193d644e457641a082e0ef Mon Sep 17 00:00:00 2001 From: Minji Park Date: Wed, 30 Nov 2016 10:16:50 +0900 Subject: [PATCH] Fix static analysis issue in keepalive - add return value checking logic after memory allocation Change-Id: I1c28e13e01c2dd7bf4b78585adf0ffdc0e6ecdfd Signed-off-by: Minji Park Reviewed-on: https://gerrit.iotivity.org/gerrit/14935 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi Reviewed-by: Jaehong Jo Reviewed-by: Phil Coval Reviewed-by: Ashok Babu Channa (cherry picked from commit 64b44c48ab8944c7cae1cabf64aa0e1e98ada932) Reviewed-on: https://gerrit.iotivity.org/gerrit/15339 Reviewed-by: jihwan seo --- resource/csdk/stack/src/oickeepalive.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/resource/csdk/stack/src/oickeepalive.c b/resource/csdk/stack/src/oickeepalive.c index 44d91ba..caa1125 100644 --- a/resource/csdk/stack/src/oickeepalive.c +++ b/resource/csdk/stack/src/oickeepalive.c @@ -877,6 +877,16 @@ OCStackResult AddResourceTypeNameToPayload(OCRepPayload *payload) const char *value = OCGetResourceTypeName(g_keepAliveHandle, i); OIC_LOG_V(DEBUG, TAG, "value: %s", value); rt[i] = OICStrdup(value); + if (NULL == rt[i]) + { + OIC_LOG_V(ERROR, TAG, "Creating duplicate string for rt failed!"); + for (uint8_t j = 0; j < i; ++j) + { + OICFree(rt[j]); + } + OICFree(rt); + return OC_STACK_NO_MEMORY; + } } OCRepPayloadSetStringArray(payload, OC_RSRVD_RESOURCE_TYPE, (const char **) rt, rtDim); for (uint8_t i = 0; i < numElement; ++i) @@ -902,6 +912,16 @@ OCStackResult AddResourceInterfaceNameToPayload(OCRepPayload *payload) const char *value = OCGetResourceInterfaceName(g_keepAliveHandle, i); OIC_LOG_V(DEBUG, TAG, "value: %s", value); itf[i] = OICStrdup(value); + if (NULL == itf[i]) + { + OIC_LOG_V(ERROR, TAG, "Creating duplicate string for itf failed!"); + for (uint8_t j = 0; j < i; ++j) + { + OICFree(itf[j]); + } + OICFree(itf); + return OC_STACK_NO_MEMORY; + } } OCRepPayloadSetStringArray(payload, OC_RSRVD_INTERFACE, (const char **) itf, ifDim); for (uint8_t i = 0; i < numElement; ++i) -- 2.7.4