[Easy Setup] Reject UPDATE on not allowed property 88/27788/4
authorAbhishek Pandey <abhi.siso@samsung.com>
Fri, 21 Dec 2018 09:06:57 +0000 (14:36 +0530)
committerNathan Heldt-Sheller <nathan.heldt-sheller@intel.com>
Mon, 11 Feb 2019 21:14:37 +0000 (21:14 +0000)
[IOT-3231] https://jira.iotivity.org/browse/IOT-3231
Easy Setup Resource does not reject an UPDATE request to add a new Link

Currently only criteria to reject POST on EasySetup Resource
(/EasySetupResURI) is to check if properties are read-only. However,
the POST request may contain additional properties "href", "rep"
representing a link to be added in collection or any other unsupported
properties. Even though these properties are not updated, success
response is sent to client which is not appropriate and is flagged as
CTT failure.

This patch changes the validation logic on /EasySetupResURI for POST
on baseline interface to allow the POST only if payload contains
the writable property "cn". Update to any other property is rejected.

Change-Id: I33f6e7eda33481fa2137341f93b607a837ff5a87
Signed-off-by: Abhishek Pandey <abhi.siso@samsung.com>
service/easy-setup/enrollee/src/resourcehandler.c

index af6a7c3..e1d9abd 100644 (file)
@@ -508,16 +508,19 @@ OCEntityHandlerResult updateEasySetupResource(OCEntityHandlerRequest* ehRequest,
     else if (!strcmp(iface_name, OC_RSRVD_INTERFACE_DEFAULT))
     {
         OIC_LOG(DEBUG, ES_RH_TAG, "Handling POST request on default interface");
-        // If payload has read-only properties, then the request is considered as a bad request.
-        if (!OCRepPayloadIsNull(input, OC_RSRVD_ES_PROVSTATUS) ||
-            !OCRepPayloadIsNull(input, OC_RSRVD_ES_LAST_ERRORCODE))
+
+        if (!OCRepPayloadIsNull(input, OC_RSRVD_ES_CONNECT))
         {
-            OIC_LOG(ERROR, ES_RH_TAG, "Read-only property cannot be updated.");
-            ehResult = OC_EH_BAD_REQ;
+            // Payload contains "cn" property, so update it.
+            updateEasySetupConnectProperty(input);
         }
         else
         {
-            updateEasySetupConnectProperty(input);
+            // Return error response for any property excluding writable
+            // property. e.g. readonly properties like "ps", "lec" or any
+            // links are not allowed in POST Request.
+            OIC_LOG(ERROR, ES_RH_TAG, "UPDATE for property not allowed!");
+            ehResult = OC_EH_BAD_REQ;
         }
     }