Updated files for some issues identified in Gerrit Patch 401.
Change-Id: I5b6bfb60e10d9ae4af358e03aaf8c5a4d8854911
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/486
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Doug Hudson <douglas.hudson@intel.com>
Reviewed-by: Erich Keane <erich.keane@intel.com>
#define OC_RSRVD_OC "oc"
#define OC_RSRVD_PAYLOAD "payload"
#define OC_RSRVD_HREF "href"
+#define OC_RSRVD_PROPERTY "prop"
#define OC_RSRVD_REPRESENTATION "rep"
#define OC_RSRVD_CONTENT_TYPE "ct"
#define OC_RSRVD_RESOURCE_TYPE "rt"
/** Remote Endpoint address **/
//////////////////////////////////////////////////////////
- // TODO: Consider moving these member to CoAP
- // IP address & port of client registered for observe
- // TODO: YK bundle this up as endpoint
+ // TODO: bundle this up as endpoint
CAAddress_t addressInfo;
/** Connectivity of the endpoint**/
CAConnectivityType_t connectivityType;
// Typedefs
//-----------------------------------------------------------------------------
-/** This would need to be modified for specific platforms and specific
- * technologies
- */
-#define DEV_ADDR_SIZE_MAX (16)
/**
* Data structure to encapsulate IPv4/IPv6/Contiki/lwIP device addresses
*
-*/
+ */
typedef struct OCDevAddr
{
uint32_t size; /**< length of the address stored in addr field. */
// This file contains all the variables which can be configured/modified as
// per platform or specific product usage scenarios.
+/** This would need to be updated in future as we move to support IPv6 and other
+ * technologies.
+ */
+#define DEV_ADDR_SIZE_MAX (16)
/**
* Maximum length of the response supported by Server for any REST request.
if (resourcePtr)
{
encodeRes = 0;
- if (filterOn == STACK_RES_DISCOVERY_RT_FILTER)
+ if ((filterOn == STACK_RES_DISCOVERY_RT_FILTER) && filterValue)
{
resourceTypePtr = resourcePtr->rsrcType;
while (resourceTypePtr)
resourceTypePtr = resourceTypePtr->next;
}
}
- else if (filterOn == STACK_RES_DISCOVERY_IF_FILTER)
+ else if ((filterOn == STACK_RES_DISCOVERY_IF_FILTER) && filterValue)
{
interfacePtr = resourcePtr->rsrcInterface;
while (interfacePtr)
OC_RSRVD_SERVER_INSTANCE_ID,
cJSON_CreateString(OCGetServerInstanceIDString()));
- cJSON_AddItemToObject (resObj, "prop", propObj = cJSON_CreateObject());
+ cJSON_AddItemToObject (resObj, OC_RSRVD_PROPERTY, propObj = cJSON_CreateObject());
// Add resource types
cJSON_AddItemToObject (propObj, OC_RSRVD_RESOURCE_TYPE, rtArray = cJSON_CreateArray());
resourceTypePtr = resourcePtr->rsrcType;
{
char *jsonStr = NULL;
uint16_t jsonLen = 0;
- cJSON *repObj = cJSON_GetObjectItem(savedDeviceInfo, "rep");
+ cJSON *repObj = cJSON_GetObjectItem(savedDeviceInfo, OC_RSRVD_REPRESENTATION);
OC_LOG(INFO, TAG, PCF("Entering BuildVirtualResourceResponseForDevice"));
- if (filterOn == STACK_DEVICE_DISCOVERY_DI_FILTER)
+ if ((filterOn == STACK_DEVICE_DISCOVERY_DI_FILTER) && filterValue)
{
if((cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_ID) != NULL) &&
strcmp(cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_ID)->valuestring, filterValue)
ret = OC_STACK_OK;
}
}
- else if (filterOn == STACK_DEVICE_DISCOVERY_DN_FILTER)
+ else if ((filterOn == STACK_DEVICE_DISCOVERY_DN_FILTER) && filterValue)
{
if((cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_NAME) != NULL) &&
strcmp(cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_NAME)->valuestring,
//Note: OCServerRequest includes 1 byte for the JSON Payload. payloadSize is calculated
//as the required length of the string, so this will result in enough room for the
//null terminator as well.
- serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) + reqTotalSize - 1);
+ serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) +
+ (reqTotalSize ? reqTotalSize : 1) - 1);
VERIFY_NON_NULL(serverRequest);
serverRequest->coapID = coapID;
memcpy(serverRequest->rcvdVendorSpecificHeaderOptions, rcvdVendorSpecificHeaderOptions,
MAX_HEADER_OPTIONS * sizeof(OCHeaderOption));
}
- if(reqJSONPayload)
+ if(reqJSONPayload && reqTotalSize)
{
// destination is at least 1 greater than the source, so a NULL always exists in the
// last character
responseEndpoint.resourceUri = (CAURI_t) serverRequest->resourceUrl;
responseEndpoint.addressInfo = serverRequest->addressInfo;
responseEndpoint.connectivityType = serverRequest->connectivityType;
- responseEndpoint.isSecured = serverRequest->secured;
+ responseEndpoint.isSecured = serverRequest->secured;
// Copy the info
switch (ehResponse->ehResult)
// repeated URLs, which are not allowed. If a repeat is found, exit with an error
while (pointer)
{
- if (strcmp(uri, pointer->uri) == 0)
+ if (strncmp(uri, pointer->uri, MAX_URI_LENGTH) == 0)
{
OC_LOG(ERROR, TAG, PCF("URI already in use"));
return OC_STACK_INVALID_PARAM;