From 40fedff0bc18acdf57efe4e57a8f5bd5a988e308 Mon Sep 17 00:00:00 2001 From: Ziran Sun Date: Thu, 13 Apr 2017 13:48:14 +0100 Subject: [PATCH] Check for null alloc in rddatabase unit tests. Bug: https://jira.iotivity.org/browse/IOT-2022 Change-Id: I6306e10d1c3ab1146e4588077cbe091f34089059 Signed-off-by: Ziran Sun Reviewed-on: https://gerrit.iotivity.org/gerrit/19229 Tested-by: jenkins-iotivity Reviewed-by: Jaehong Jo Reviewed-by: Dave Thaler --- .../resource-directory/unittests/rddatabase.cpp | 53 ++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/resource/csdk/resource-directory/unittests/rddatabase.cpp b/resource/csdk/resource-directory/unittests/rddatabase.cpp index 4b6dc5a..b4a1afa 100644 --- a/resource/csdk/resource-directory/unittests/rddatabase.cpp +++ b/resource/csdk/resource-directory/unittests/rddatabase.cpp @@ -117,14 +117,52 @@ static OCRepPayload *CreateRDPublishPayload(const char *deviceId, OCRepPayloadSetPropString(link, OC_RSRVD_URI, anchor); size_t rtDim[MAX_REP_ARRAY_DEPTH] = {1, 0, 0}; char **rt = (char **)OICMalloc(sizeof(char *) * 1); + EXPECT_NE(NULL, rt) << "Failed to OICMalloc rt!"; + if (NULL == rt) + { + return NULL; + } rt[0] = OICStrdup(resources[i].rt); - OCRepPayloadSetStringArray(link, OC_RSRVD_RESOURCE_TYPE, (const char **)rt, - rtDim); + EXPECT_NE(NULL, rt[0]) << "Failed to OICStrdup rt!"; + if (NULL == rt[0]) + { + OICFree(rt); + return NULL; + } + bool result = false; + result = OCRepPayloadSetStringArray(link, OC_RSRVD_RESOURCE_TYPE, (const char **)rt, rtDim); + OICFree(rt[0]); + OICFree(rt); + EXPECT_TRUE(result) << "Failed to set resource type!"; + if (!result) + { + return NULL; + } + size_t itfDim[MAX_REP_ARRAY_DEPTH] = {1, 0, 0}; char **itf = (char **)OICMalloc(sizeof(char *) * 1); + EXPECT_NE(NULL, itf) << "Failed to OICMalloc itf!"; + if (NULL == itf) + { + return NULL; + } itf[0] = OICStrdup(resources[i].itf); - OCRepPayloadSetStringArray(link, OC_RSRVD_INTERFACE, (const char **)itf, - itfDim); + EXPECT_NE(NULL, itf[0]) << "Failed to OICStrdup itf!"; + if (NULL == itf[0]) + { + OICFree(itf); + return NULL; + } + + result = OCRepPayloadSetStringArray(link, OC_RSRVD_INTERFACE, (const char **)itf, itfDim); + OICFree(itf[0]); + OICFree(itf); + EXPECT_TRUE(result) << "Failed to set interface!"; + if (!result) + { + return NULL; + } + OCRepPayload *policy = OCRepPayloadCreate(); OCRepPayloadSetPropInt(policy, OC_RSRVD_BITMAP, resources[i].bm); OCRepPayloadSetPropObjectAsOwner(link, OC_RSRVD_POLICY, policy); @@ -180,6 +218,7 @@ TEST_F(RDDatabaseTests, StoreResources) itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT); const char *deviceId = "7a960f46-a52e-4837-bd83-460b1a6dd56b"; OCRepPayload *repPayload = CreateResources(deviceId); + ASSERT_NE(NULL, repPayload) << "CreateResources failed!"; EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(repPayload)); @@ -206,6 +245,7 @@ TEST_F(RDDatabaseTests, AddResources) const char *deviceId = "7a960f46-a52e-4837-bd83-460b1a6dd56b"; OCRepPayload *repPayload = CreateResources(deviceId); + ASSERT_NE(NULL, repPayload) << "CreateResources failed!"; EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(repPayload)); OCPayloadDestroy((OCPayload *)repPayload); @@ -250,6 +290,8 @@ TEST_F(RDDatabaseTests, UpdateResources) const char *deviceId = &anchor[6]; OCRepPayload *repPayload = CreateResources(deviceId); + ASSERT_NE(NULL, repPayload) << "CreateResources failed!"; + EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(repPayload)); OCPayloadDestroy((OCPayload *)repPayload); @@ -303,6 +345,7 @@ TEST_F(RDDatabaseTests, AddAndUpdateResources) const char *deviceId = &anchor[6]; OCRepPayload *repPayload = CreateResources(deviceId); + ASSERT_NE(NULL, repPayload) << "CreateResources failed!"; EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(repPayload)); OCPayloadDestroy((OCPayload *)repPayload); @@ -373,7 +416,9 @@ TEST_F(RDDatabaseTests, DeleteResourcesDevice) }; OCRepPayload *payloads[2]; payloads[0] = CreateResources(deviceIds[0]); + ASSERT_NE(NULL, payloads[0]) << "CreateResources failed!"; payloads[1] = CreateResources(deviceIds[1]); + ASSERT_NE(NULL, payloads[1]) << "CreateResources failed!"; EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(payloads[0])); EXPECT_EQ(OC_STACK_OK, OCRDDatabaseStoreResources(payloads[1])); -- 2.7.4