diff --git a/frameworks/native/audioutils/include/audio_utils.h b/frameworks/native/audioutils/include/audio_utils.h index 6f4b82d2b145f329dc1b0a72e3acf816cf1e4760..967e0c3c4fa1bdb623ee63be1aaec4b8259359b9 100644 --- a/frameworks/native/audioutils/include/audio_utils.h +++ b/frameworks/native/audioutils/include/audio_utils.h @@ -111,7 +111,7 @@ public: static bool VerifyPermission(const std::string &permissionName, uint32_t tokenId); static bool NeedVerifyBackgroundCapture(int32_t callingUid, SourceType sourceType); static bool VerifyBackgroundCapture(uint32_t tokenId, uint64_t fullTokenId); - static void NotifyPrivacy(uint32_t targetTokenId, AudioPermissionState state); + static bool NotifyPrivacy(uint32_t targetTokenId, AudioPermissionState state); }; void AdjustStereoToMonoForPCM8Bit(int8_t *data, uint64_t len); diff --git a/frameworks/native/audioutils/src/audio_utils.cpp b/frameworks/native/audioutils/src/audio_utils.cpp index af78b2ae9794cf33f070f84175a3f55d11a1ca84..d5dfef660511c410b7726a23c7a3f8c05d339de3 100644 --- a/frameworks/native/audioutils/src/audio_utils.cpp +++ b/frameworks/native/audioutils/src/audio_utils.cpp @@ -268,25 +268,32 @@ bool PermissionUtil::VerifyBackgroundCapture(uint32_t tokenId, uint64_t fullToke return ret; } -void PermissionUtil::NotifyPrivacy(uint32_t targetTokenId, AudioPermissionState state) +bool PermissionUtil::NotifyPrivacy(uint32_t targetTokenId, AudioPermissionState state) { if (state == AUDIO_PERMISSION_START) { Trace trace("PrivacyKit::StartUsingPermission"); int res = Security::AccessToken::PrivacyKit::StartUsingPermission(targetTokenId, MICROPHONE_PERMISSION); if (res != 0) { - AUDIO_WARNING_LOG("notice start using perm error: %{public}d", res); + AUDIO_ERR_LOG("StartUsingPermission for tokenId %{public}u!, The PrivacyKit error code is %{public}d", + targetTokenId, res); + return false; } res = Security::AccessToken::PrivacyKit::AddPermissionUsedRecord(targetTokenId, MICROPHONE_PERMISSION, 1, 0); if (res != 0) { - AUDIO_WARNING_LOG("add mic record error: %{public}d", res); + AUDIO_ERR_LOG("AddPermissionUsedRecord for tokenId %{public}u! The PrivacyKit error code is " + "%{public}d", targetTokenId, res); + return false; } } else if (state == AUDIO_PERMISSION_STOP) { Trace trace("PrivacyKit::StopUsingPermission"); int res = Security::AccessToken::PrivacyKit::StopUsingPermission(targetTokenId, MICROPHONE_PERMISSION); if (res != 0) { - AUDIO_WARNING_LOG("notice stop using perm error: %{public}d", res); + AUDIO_ERR_LOG("StopUsingPermission for tokenId %{public}u!, The PrivacyKit error code is %{public}d", + targetTokenId, res); + return false; } } + return true; } void AdjustStereoToMonoForPCM8Bit(int8_t *data, uint64_t len) diff --git a/services/audio_service/server/src/audio_process_in_server.cpp b/services/audio_service/server/src/audio_process_in_server.cpp index 866939f347b953d48f439f9449d9526d0acae4b1..9d5e70f1a944b8dc57ba81ea26dd2a4e2d0aadd3 100644 --- a/services/audio_service/server/src/audio_process_in_server.cpp +++ b/services/audio_service/server/src/audio_process_in_server.cpp @@ -97,7 +97,8 @@ int32_t AudioProcessInServer::Start() if (processConfig_.audioMode != AUDIO_MODE_PLAYBACK && needCheckBackground_) { CHECK_AND_RETURN_RET_LOG(PermissionUtil::VerifyBackgroundCapture(processConfig_.appInfo.appTokenId, processConfig_.appInfo.appFullTokenId), ERR_OPERATION_FAILED, "VerifyBackgroundCapture failed!"); - PermissionUtil::NotifyPrivacy(processConfig_.appInfo.appTokenId, AUDIO_PERMISSION_START); + CHECK_AND_RETURN_RET_LOG(PermissionUtil::NotifyPrivacy(processConfig_.appInfo.appTokenId, + AUDIO_PERMISSION_START), ERR_PERMISSION_DENIED, "NotifyPrivacy failed!"); } for (size_t i = 0; i < listenerList_.size(); i++) { @@ -144,7 +145,8 @@ int32_t AudioProcessInServer::Resume() uint64_t fullTokenId = processConfig_.appInfo.appFullTokenId; CHECK_AND_RETURN_RET_LOG(PermissionUtil::VerifyBackgroundCapture(tokenId, fullTokenId), ERR_OPERATION_FAILED, "VerifyBackgroundCapture failed!"); - PermissionUtil::NotifyPrivacy(tokenId, AUDIO_PERMISSION_START); + CHECK_AND_RETURN_RET_LOG(PermissionUtil::NotifyPrivacy(tokenId, AUDIO_PERMISSION_START), ERR_PERMISSION_DENIED, + "NotifyPrivacy failed!"); } for (size_t i = 0; i < listenerList_.size(); i++) { diff --git a/services/audio_service/server/src/capturer_in_server.cpp b/services/audio_service/server/src/capturer_in_server.cpp index 34577562b971cb0f18860d96654b8013b5c41357..c78e9d33ecf29fd1ee324845d6d9b5bb9eeba195 100644 --- a/services/audio_service/server/src/capturer_in_server.cpp +++ b/services/audio_service/server/src/capturer_in_server.cpp @@ -292,7 +292,8 @@ int32_t CapturerInServer::Start() uint64_t fullTokenId = processConfig_.appInfo.appFullTokenId; CHECK_AND_RETURN_RET_LOG(PermissionUtil::VerifyBackgroundCapture(tokenId, fullTokenId), ERR_OPERATION_FAILED, "VerifyBackgroundCapture failed!"); - PermissionUtil::NotifyPrivacy(tokenId, AUDIO_PERMISSION_START); + CHECK_AND_RETURN_RET_LOG(PermissionUtil::NotifyPrivacy(tokenId, AUDIO_PERMISSION_START), ERR_PERMISSION_DENIED, + "NotifyPrivacy failed!"); } status_ = I_STATUS_STARTING;