From cb66c82718b7ab8243bb8b4c788a86a6ec393ff1 Mon Sep 17 00:00:00 2001 From: liuyuehua Date: Thu, 11 Apr 2024 09:35:35 +0800 Subject: [PATCH] Resolve DT failure caused by ipc stream permission verification. Signed-off-by: liuyuehua --- services/audio_service/BUILD.gn | 6 ++++++ services/audio_service/server/include/audio_server.h | 3 ++- services/audio_service/server/src/audio_server.cpp | 12 ++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/services/audio_service/BUILD.gn b/services/audio_service/BUILD.gn index 6d9dba1393..b605b73663 100644 --- a/services/audio_service/BUILD.gn +++ b/services/audio_service/BUILD.gn @@ -396,6 +396,12 @@ ohos_shared_library("audio_service") { external_deps += [ "config_policy:configpolicy_util" ] } + if (build_variant == "user") { + cflags = [ "-DAUDIO_BUILD_VARIANT_USER" ] + } else if (build_variant == "root") { + cflags = [ "-DAUDIO_BUILD_VARIANT_ROOT" ] + } + if (sensor_enable == true) { external_deps += [ "sensor:sensor_interface_native" ] } diff --git a/services/audio_service/server/include/audio_server.h b/services/audio_service/server/include/audio_server.h index 20bfb978b9..0e0f9c69a3 100644 --- a/services/audio_service/server/include/audio_server.h +++ b/services/audio_service/server/include/audio_server.h @@ -131,7 +131,8 @@ private: Security::AccessToken::AccessTokenID tokenId = Security::AccessToken::INVALID_TOKENID); bool PermissionChecker(const AudioProcessConfig &config); bool CheckPlaybackPermission(Security::AccessToken::AccessTokenID tokenId, const StreamUsage streamUsage); - bool CheckRecorderPermission(Security::AccessToken::AccessTokenID tokenId, const SourceType sourceType); + bool CheckRecorderPermission(Security::AccessToken::AccessTokenID tokenId, const SourceType sourceType, + int32_t appUid); bool CheckVoiceCallRecorderPermission(Security::AccessToken::AccessTokenID tokenId); void AudioServerDied(pid_t pid); diff --git a/services/audio_service/server/src/audio_server.cpp b/services/audio_service/server/src/audio_server.cpp index 0d855cf374..fd4f3f3a4c 100644 --- a/services/audio_service/server/src/audio_server.cpp +++ b/services/audio_service/server/src/audio_server.cpp @@ -903,7 +903,8 @@ bool AudioServer::PermissionChecker(const AudioProcessConfig &config) if (config.audioMode == AUDIO_MODE_PLAYBACK) { return CheckPlaybackPermission(config.appInfo.appTokenId, config.rendererInfo.streamUsage); } else { - return CheckRecorderPermission(config.appInfo.appTokenId, config.capturerInfo.sourceType); + return CheckRecorderPermission(config.appInfo.appTokenId, config.capturerInfo.sourceType, + config.appInfo.appUid); } } @@ -924,8 +925,15 @@ bool AudioServer::CheckPlaybackPermission(Security::AccessToken::AccessTokenID t return true; } -bool AudioServer::CheckRecorderPermission(Security::AccessToken::AccessTokenID tokenId, const SourceType sourceType) +bool AudioServer::CheckRecorderPermission(Security::AccessToken::AccessTokenID tokenId, const SourceType sourceType, + int32_t appUid) { +#ifdef AUDIO_BUILD_VARIANT_ROOT + if (appUid == ROOT_UID) { + return true; + } +#endif + if (sourceType == SOURCE_TYPE_VOICE_CALL) { bool hasSystemPermission = PermissionUtil::VerifySystemPermission(); CHECK_AND_RETURN_RET_LOG(hasSystemPermission, false, -- Gitee