Added function pointer validation to InProcClientWrapper
authorErich Keane <erich.keane@intel.com>
Tue, 31 Mar 2015 22:01:02 +0000 (15:01 -0700)
committerErich Keane <erich.keane@intel.com>
Wed, 1 Apr 2015 22:04:10 +0000 (22:04 +0000)
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 <erich.keane@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/620
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
resource/src/InProcClientWrapper.cpp
resource/unittests/OCPlatformTest.cpp

index 56c95c3..d8f4f0e 100644 (file)
@@ -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 =
index 233c025..047daeb 100644 (file)
@@ -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)