From: Erich Keane Date: Tue, 31 Mar 2015 22:01:02 +0000 (-0700) Subject: Added function pointer validation to InProcClientWrapper X-Git-Tag: 1.2.0+RC1~1855^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3ffff8a065dcff17ae59a8a2618ffb56a9ac7fa;p=platform%2Fupstream%2Fiotivity.git Added function pointer validation to InProcClientWrapper InProcClientWrapper permitted calls with an invalid function object being sent. This ensures that the parameter is correctly validated. Change-Id: If38af50fd6fb3ab2006c0c5cb53dd9af0c42a57b Signed-off-by: Erich Keane Reviewed-on: https://gerrit.iotivity.org/gerrit/620 Tested-by: jenkins-iotivity Reviewed-by: Jon A. Cruz --- diff --git a/resource/src/InProcClientWrapper.cpp b/resource/src/InProcClientWrapper.cpp index 56c95c3..d8f4f0e 100644 --- a/resource/src/InProcClientWrapper.cpp +++ b/resource/src/InProcClientWrapper.cpp @@ -193,6 +193,11 @@ namespace OC const std::string& resourceType, OCConnectivityType connectivityType, FindCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } + OCStackResult result; OCCallbackData cbdata = {0}; @@ -249,6 +254,10 @@ namespace OC const std::string& deviceURI, OCConnectivityType connectivityType, FindDeviceCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -337,6 +346,10 @@ namespace OC const QueryParamsMap& queryParams, const HeaderOptions& headerOptions, GetCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -442,6 +455,10 @@ namespace OC const QueryParamsMap& queryParams, const HeaderOptions& headerOptions, PostCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -485,6 +502,10 @@ namespace OC const QueryParamsMap& queryParams, const HeaderOptions& headerOptions, PutCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -544,6 +565,10 @@ namespace OC const std::string& uri, OCConnectivityType connectivityType, const HeaderOptions& headerOptions, DeleteCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -617,6 +642,10 @@ namespace OC const QueryParamsMap& queryParams, const HeaderOptions& headerOptions, ObserveCallback& callback, QualityOfService QoS) { + if(!callback) + { + return OC_STACK_INVALID_PARAM; + } OCStackResult result; OCCallbackData cbdata = {0}; @@ -728,6 +757,10 @@ namespace OC const std::string& host, const std::string& resourceType, OCConnectivityType connectivityType, SubscribeCallback& presenceHandler) { + if(!presenceHandler) + { + return OC_STACK_INVALID_PARAM; + } OCCallbackData cbdata = {0}; ClientCallbackContext::SubscribePresenceContext* ctx = diff --git a/resource/unittests/OCPlatformTest.cpp b/resource/unittests/OCPlatformTest.cpp index 233c025..047daeb 100644 --- a/resource/unittests/OCPlatformTest.cpp +++ b/resource/unittests/OCPlatformTest.cpp @@ -507,8 +507,8 @@ namespace OCPlatformTest { std::ostringstream requestURI; requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light"; - EXPECT_EQ(OC_STACK_OK, OCPlatform::findResource("", requestURI.str(), - OC_WIFI, NULL)); + EXPECT_THROW(OCPlatform::findResource("", requestURI.str(), + OC_WIFI, NULL), OC::OCException); } TEST(FindResourceTest, FindResourceWithLowQoS) @@ -575,8 +575,9 @@ namespace OCPlatformTest OCPlatform::Configure(cfg); std::ostringstream requestURI; requestURI << OC_MULTICAST_PREFIX << deviceDiscoveryURI; - EXPECT_EQ(OC_STACK_OK, - OCPlatform::getDeviceInfo("", requestURI.str(), OC_WIFI, NULL)); + EXPECT_THROW( + OCPlatform::getDeviceInfo("", requestURI.str(), OC_WIFI, NULL), + OC::OCException); } TEST(GetDeviceInfoTest, GetDeviceInfoWithLowQos)