From: jihwan.seo Date: Tue, 15 Nov 2016 08:48:54 +0000 (+0900) Subject: fix crash issue related set interfaceQuery. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=593e63b24616978a7f310ed8c3070004add3870a;p=contrib%2Fiotivity.git fix crash issue related set interfaceQuery. Change-Id: I7c40c0930879a0ad860e935325adc44b860d9ee8 Signed-off-by: jihwan.seo Reviewed-on: https://gerrit.iotivity.org/gerrit/14355 Tested-by: jenkins-iotivity Reviewed-by: Larry Sachs Reviewed-by: Habib Virji --- diff --git a/resource/csdk/stack/src/ocresource.c b/resource/csdk/stack/src/ocresource.c index 9354a79..4ca5f95 100755 --- a/resource/csdk/stack/src/ocresource.c +++ b/resource/csdk/stack/src/ocresource.c @@ -805,31 +805,34 @@ static OCStackResult HandleVirtualResource (OCServerRequest *request, OCResource } bool baselineQuery = false; - if (0 != strcmp(interfaceQuery, OC_RSRVD_INTERFACE_LL)) + if (interfaceQuery && 0 != strcmp(interfaceQuery, OC_RSRVD_INTERFACE_LL)) { baselineQuery = true; } - if (interfaceQuery) + + discoveryResult = discoveryPayloadCreateAndAddDeviceId(&payload); + VERIFY_PARAM_NON_NULL(TAG, payload, "Failed creating Discovery Payload."); + VERIFY_SUCCESS(discoveryResult, OC_STACK_OK); + + OCDiscoveryPayload *discPayload = (OCDiscoveryPayload *)payload; + if (baselineQuery) { - discoveryResult = discoveryPayloadCreateAndAddDeviceId(&payload); - VERIFY_PARAM_NON_NULL(TAG, payload, "Failed creating Discovery Payload."); + discoveryResult = addDiscoveryBaselineCommonProperties(discPayload); VERIFY_SUCCESS(discoveryResult, OC_STACK_OK); - - OCDiscoveryPayload *discPayload = (OCDiscoveryPayload *)payload; - if (baselineQuery) - { - discoveryResult = addDiscoveryBaselineCommonProperties(discPayload); - VERIFY_SUCCESS(discoveryResult, OC_STACK_OK); - } - OCResourceProperty prop = OC_DISCOVERABLE; + } + OCResourceProperty prop = OC_DISCOVERABLE; #ifdef MQ_BROKER - prop = (OC_MQ_BROKER_URI == virtualUriInRequest) ? OC_MQ_BROKER : prop; + prop = (OC_MQ_BROKER_URI == virtualUriInRequest) ? OC_MQ_BROKER : prop; #endif - for (; resource && discoveryResult == OC_STACK_OK; resource = resource->next) + for (; resource && discoveryResult == OC_STACK_OK; resource = resource->next) + { + discoveryResult = findResourceAtRD(resource, interfaceQuery, resourceTypeQuery, + discPayload); + if (OC_STACK_NO_RESOURCE == discoveryResult) { - discoveryResult = findResourceAtRD(resource, interfaceQuery, resourceTypeQuery, - discPayload); - if (OC_STACK_NO_RESOURCE == discoveryResult) + if ((!baselineQuery && (resource->resourceProperties & prop)) || + (baselineQuery && (includeThisResourceInResponse(resource, interfaceQuery, + resourceTypeQuery)))) { if ((!baselineQuery && (resource->resourceProperties & prop)) || (baselineQuery && (includeThisResourceInResponse(resource, interfaceQuery, @@ -844,10 +847,10 @@ static OCStackResult HandleVirtualResource (OCServerRequest *request, OCResource } } } - if (discPayload->resources == NULL) - { - discoveryResult = OC_STACK_NO_RESOURCE; - } + } + if (discPayload->resources == NULL) + { + discoveryResult = OC_STACK_NO_RESOURCE; } } else if (virtualUriInRequest == OC_DEVICE_URI)