Fix crash in csdk/sample/ocserver on resource PUT.
authorCharlie Lenahan <charlie.lenahan@intel.com>
Mon, 20 Apr 2015 23:30:35 +0000 (19:30 -0400)
committerErich Keane <erich.keane@intel.com>
Fri, 24 Apr 2015 18:26:15 +0000 (18:26 +0000)
If a client does a resource PUT with only power OR state (not both),
then it will crash.

Change-Id: If19ce5edaf1f3538443074e8a66fa836ef5290c9
Signed-off-by: Charlie Lenahan <charlie.lenahan@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/788
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp

index 88668e9..3b8260e 100644 (file)
@@ -112,8 +112,17 @@ char* constructJsonResponse (OCEntityHandlerRequest *ehRequest)
         carrier = cJSON_GetArrayItem(carrier, 0);
         carrier = cJSON_GetObjectItem(carrier, "rep");
 
-        currLightResource->power = cJSON_GetObjectItem(carrier,"power")->valueint;
-        currLightResource->state = cJSON_GetObjectItem(carrier,"state")->valueint;
+        cJSON* prop = cJSON_GetObjectItem(carrier,"power");
+        if (prop)
+        {
+            currLightResource->power =prop->valueint;
+        }
+
+        prop = cJSON_GetObjectItem(carrier,"state");
+        if (prop)
+        {
+            currLightResource->state = prop->valueint;
+        }
 
         cJSON_Delete(putJson);
     }