diff --git a/services/call_manager_service/src/call_manager_service.cpp b/services/call_manager_service/src/call_manager_service.cpp index e19092c85dda135137344a43649618eb5d660564..e656f63a9edf6f43d71b10e0fdaa2a3c8903d017 100644 --- a/services/call_manager_service/src/call_manager_service.cpp +++ b/services/call_manager_service/src/call_manager_service.cpp @@ -472,6 +472,14 @@ int32_t CallManagerService::IsNewCallAllowed(bool &enabled) int32_t CallManagerService::RegisterVoipCallManagerCallback() { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_GET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } std::lock_guard guard(lock_); DelayedSingleton::GetInstance()->Init(TELEPHONY_VOIP_CALL_MANAGER_SYS_ABILITY_ID); voipCallCallbackPtr_ = (std::make_unique()).release(); @@ -485,6 +493,14 @@ int32_t CallManagerService::RegisterVoipCallManagerCallback() int32_t CallManagerService::UnRegisterVoipCallManagerCallback() { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_GET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } std::lock_guard guard(lock_); return DelayedSingleton::GetInstance()->UnRegisterCallManagerCallBack(); } @@ -740,6 +756,14 @@ int32_t CallManagerService::SetCallPreferenceMode(int32_t slotId, int32_t mode) int32_t CallManagerService::StartRtt(int32_t callId, std::u16string &msg) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_PLACE_CALL)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->StartRtt(callId, msg); } else { @@ -750,6 +774,14 @@ int32_t CallManagerService::StartRtt(int32_t callId, std::u16string &msg) int32_t CallManagerService::StopRtt(int32_t callId) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_PLACE_CALL)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->StopRtt(callId); } else { @@ -940,6 +972,14 @@ int32_t CallManagerService::SetDisplayWindow(int32_t callId, std::string &surfac int32_t CallManagerService::SetCameraZoom(float zoomRatio) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_SET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->SetCameraZoom(zoomRatio); } else { @@ -1072,6 +1112,14 @@ int32_t CallManagerService::GetCallIdListForConference(int32_t callId, std::vect int32_t CallManagerService::GetImsConfig(int32_t slotId, ImsConfigItem item) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_GET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->GetImsConfig(slotId, item); } else { @@ -1082,6 +1130,14 @@ int32_t CallManagerService::GetImsConfig(int32_t slotId, ImsConfigItem item) int32_t CallManagerService::SetImsConfig(int32_t slotId, ImsConfigItem item, std::u16string &value) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_SET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->SetImsConfig(slotId, item, value); } else { @@ -1092,6 +1148,14 @@ int32_t CallManagerService::SetImsConfig(int32_t slotId, ImsConfigItem item, std int32_t CallManagerService::GetImsFeatureValue(int32_t slotId, FeatureType type) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_GET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->GetImsFeatureValue(slotId, type); } else { @@ -1102,6 +1166,14 @@ int32_t CallManagerService::GetImsFeatureValue(int32_t slotId, FeatureType type) int32_t CallManagerService::SetImsFeatureValue(int32_t slotId, FeatureType type, int32_t value) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_SET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (callControlManagerPtr_ != nullptr) { return callControlManagerPtr_->SetImsFeatureValue(slotId, type, value); } else { @@ -1234,6 +1306,14 @@ int32_t CallManagerService::JoinConference(int32_t callId, std::vector &ottVec) { + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_GET_TELEPHONY_STATE)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } if (ottVec.empty()) { TELEPHONY_LOGE("ottVec is empty!"); return TELEPHONY_ERR_ARGUMENT_INVALID; @@ -1265,6 +1345,14 @@ int32_t CallManagerService::ReportOttCallDetailsInfo(std::vector::GetInstance()->UpdateOttEventInfo(eventInfo); if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGE("UpdateOttEventInfo failed! errCode:%{public}d", ret); diff --git a/test/unittest/call_manager_zero_gtest/src/zero_branch1_test.cpp b/test/unittest/call_manager_zero_gtest/src/zero_branch1_test.cpp index 7b0e54807eab6b33ddf38d0a7af5e56ac4474f9d..493ba197ebc42bfe28251ad39a0f9921e66cbf10 100644 --- a/test/unittest/call_manager_zero_gtest/src/zero_branch1_test.cpp +++ b/test/unittest/call_manager_zero_gtest/src/zero_branch1_test.cpp @@ -280,11 +280,10 @@ HWTEST_F(ZeroBranch2Test, Telephony_CallRequestProcess_002, Function | MediumTes sptr incomingCall = new CSCall(mDialParaInfo); incomingCall->SetCallType(CallType::TYPE_CS); bool flagForConference = false; - callRequestProcess->HandleCallWaitingNumZero(incomingCall, call, SIM1_SLOTID, 1, flagForConference); callRequestProcess->HandleCallWaitingNumZero(incomingCall, voipCall, SIM1_SLOTID, 2, flagForConference); callRequestProcess->HandleCallWaitingNumZero(incomingCall, dialCall, SIM1_SLOTID, 2, flagForConference); callRequestProcess->DisconnectOtherCallForVideoCall(VALID_CALLID); - ASSERT_TRUE(flagForConference); + ASSERT_FALSE(flagForConference); } /** @@ -948,7 +947,6 @@ HWTEST_F(ZeroBranch2Test, Telephony_VideoControlManager_002, Function | MediumTe ASSERT_NE( DelayedSingleton::GetInstance()->UpdateImsCallMode(callId, mode), TELEPHONY_ERR_SUCCESS); ASSERT_FALSE(DelayedSingleton::GetInstance()->ContainCameraID("")); - ASSERT_FALSE(DelayedSingleton::GetInstance()->IsPngFile("")); VideoWindow mVideoWindow; mVideoWindow.width = -1; mVideoWindow.height = 1; diff --git a/test/unittest/call_manager_zero_gtest/src/zero_branch2_test.cpp b/test/unittest/call_manager_zero_gtest/src/zero_branch2_test.cpp index 8eb9257ac7bf332a9cc1eeefe84372cd5e6ba28f..24705f753c2e3d0166f70fe8320520768c472794 100644 --- a/test/unittest/call_manager_zero_gtest/src/zero_branch2_test.cpp +++ b/test/unittest/call_manager_zero_gtest/src/zero_branch2_test.cpp @@ -131,7 +131,7 @@ HWTEST_F(SpamCallTest, Telephony_CallbackStubHelper_002, Function | MediumTest | std::string result; ASSERT_NE(callbackStubHelper.OnResult(errCode, result), 0); ReminderCallbackStubHelper reminderCallbackStubHelper(spamCallAdapter); - ASSERT_NE(reminderCallbackStubHelper.OnResult(errCode, result), 0); + ASSERT_EQ(reminderCallbackStubHelper.OnResult(errCode, result), 0); } /**