From 8c24c26ea91e57983b03cf03b8ebe10968abe5d4 Mon Sep 17 00:00:00 2001 From: Joonghwan Lee Date: Thu, 31 Mar 2016 16:10:17 +0900 Subject: [PATCH] Resolved security issues - IOT-1058 & IOT-1059 https://jira.iotivity.org/browse/IOT-1058 [PM] [C] [Linux] [API] OCProvisionDirectPairing Fails to Provision Direct Pairing https://jira.iotivity.org/browse/IOT-1059 [PM] [C] [Linux] [API] OCDoDirectPairing returns OC_STACK_INVALID_PARAM instead of OC_STACK_CALLBACK while resultCallback= NULL -Patch 1: Resolved security Issues on 1.1.0-RC2 -Patch 2: Fix the expected value of OCDoDirectPairingTests.NullCallback in the stack unit test Change-Id: I82cd3f855eeda1a65596984804fc8f1ce10cb79f Signed-off-by: Joonghwan Lee Reviewed-on: https://gerrit.iotivity.org/gerrit/7479 Tested-by: jenkins-iotivity Reviewed-by: Jongsung Lee Reviewed-by: Randeep Singh --- resource/csdk/security/provisioning/src/secureresourceprovider.c | 2 +- resource/csdk/stack/src/ocstack.c | 7 ++++++- resource/csdk/stack/test/stacktests.cpp | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) mode change 100755 => 100644 resource/csdk/stack/test/stacktests.cpp diff --git a/resource/csdk/security/provisioning/src/secureresourceprovider.c b/resource/csdk/security/provisioning/src/secureresourceprovider.c index 48be684..5e7a055 100644 --- a/resource/csdk/security/provisioning/src/secureresourceprovider.c +++ b/resource/csdk/security/provisioning/src/secureresourceprovider.c @@ -950,7 +950,7 @@ static OCStackApplicationResult SRPProvisionDirectPairingCB(void *ctx, OCDoHandl { if(OC_STACK_RESOURCE_CREATED == clientResponse->result) { - registerResultForDirectPairingProvisioning(pconfData, OC_STACK_RESOURCE_CREATED); + registerResultForDirectPairingProvisioning(pconfData, OC_STACK_OK); ((OCProvisionResultCB)(resultCallback))(pconfData->ctx, pconfData->numOfResults, pconfData->resArr, false); diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index 89c2bc1..aad12f6 100644 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -3906,11 +3906,16 @@ OCStackResult OCDoDirectPairing(OCDPDev_t* peer, OCPrm_t pmSel, char *pinNumber, OCDirectPairingCB resultCallback) { OIC_LOG(INFO, TAG, "Start OCDoDirectPairing"); - if(NULL == peer || NULL == resultCallback) + if(NULL == peer || NULL == pinNumber) { OIC_LOG(ERROR, TAG, "Invalid parameters"); return OC_STACK_INVALID_PARAM; } + if(NULL == resultCallback) + { + OIC_LOG(ERROR, TAG, "Invalid callback"); + return OC_STACK_INVALID_CALLBACK; + } gDirectpairingCallback = resultCallback; return DPDirectPairing((OCDirectPairingDev_t*)peer, (OicSecPrm_t)pmSel, diff --git a/resource/csdk/stack/test/stacktests.cpp b/resource/csdk/stack/test/stacktests.cpp old mode 100755 new mode 100644 index d5bdd26..ae60c5b --- a/resource/csdk/stack/test/stacktests.cpp +++ b/resource/csdk/stack/test/stacktests.cpp @@ -1683,7 +1683,7 @@ TEST(OCDoDirectPairingTests, Nullpeer) TEST(OCDoDirectPairingTests, NullCallback) { - EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL)); + EXPECT_EQ(OC_STACK_INVALID_CALLBACK,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL)); } TEST(OCDoDirectPairingTests, NullpinNumber) -- 2.7.4