diff --git a/frameworks/ets/ani/accesstoken/src/ani_request_permission.cpp b/frameworks/ets/ani/accesstoken/src/ani_request_permission.cpp index a440cd234c0b668bb0164a2adee166009605a230..ef06cb84119af0ca11f92701c90ff5b886d6cc30 100644 --- a/frameworks/ets/ani/accesstoken/src/ani_request_permission.cpp +++ b/frameworks/ets/ani/accesstoken/src/ani_request_permission.cpp @@ -236,10 +236,6 @@ bool RequestAsyncContext::IsDynamicRequest() permList.emplace_back(permState); } auto ret = AccessToken::AccessTokenKit::GetSelfPermissionsState(permList, this->info); - LOGI(ATM_DOMAIN, ATM_TAG, - "TokenID: %{public}d, bundle: %{public}s, uiExAbility: %{public}s, serExAbility: %{public}s.", - this->tokenId, this->info.grantBundleName.c_str(), this->info.grantAbilityName.c_str(), - this->info.grantServiceAbilityName.c_str()); if (ret == AccessToken::FORBIDDEN_OPER) { LOGE(ATM_DOMAIN, ATM_TAG, "FORBIDDEN_OPER"); for (auto& perm : permList) { diff --git a/frameworks/js/napi/accesstoken/src/napi_request_permission.cpp b/frameworks/js/napi/accesstoken/src/napi_request_permission.cpp index 81f65d7183ef5ae1d6e3b19d33107ecda3a84584..545c39c6fb9fc9cf6f233d6b1d186b0ae63319dd 100644 --- a/frameworks/js/napi/accesstoken/src/napi_request_permission.cpp +++ b/frameworks/js/napi/accesstoken/src/napi_request_permission.cpp @@ -858,7 +858,8 @@ void NapiRequestPermission::GetPermissionsStatusExecute(napi_env env, void* data LOGD(ATM_DOMAIN, ATM_TAG, "PermList size: %{public}zu, asyncContext->permissionList size: %{public}zu.", permList.size(), asyncContext->permissionList.size()); - asyncContext->result.errorCode = AccessTokenKit::GetPermissionsStatus(asyncContext->tokenId, permList); + int32_t errorCode = AccessTokenKit::GetPermissionsStatus(asyncContext->tokenId, permList); + asyncContext->SetErrorResult(errorCode, ""); for (const auto& permState : permList) { LOGD(ATM_DOMAIN, ATM_TAG, "Permission: %{public}s", permState.permissionName.c_str()); asyncContext->permissionQueryResults.emplace_back(permState.state); diff --git a/interfaces/innerkits/privacy/test/tool/add_permission_used_record.cpp b/interfaces/innerkits/privacy/test/tool/add_permission_used_record.cpp index 4036b65790dd03459f92236d19a814a550901e1c..c7a5c885854f931bf195d406335867d3a9dc1741 100644 --- a/interfaces/innerkits/privacy/test/tool/add_permission_used_record.cpp +++ b/interfaces/innerkits/privacy/test/tool/add_permission_used_record.cpp @@ -16,36 +16,36 @@ #include #include #include +#include #include #include "accesstoken_kit.h" -#include "nativetoken_kit.h" #include "privacy_kit.h" #include "token_setproc.h" using namespace std; using namespace OHOS::Security::AccessToken; -static void NativeTokenGet() +AccessTokenID GetNativeTokenIdFromProcess(const std::string &process) { - uint64_t tokenID; - const char **perms = new (std::nothrow) const char *[1]; // size of array - perms[0] = "ohos.permission.PERMISSION_USED_STATS"; // 0: index - - NativeTokenInfoParams infoInstance = { - .dcapsNum = 0, - .permsNum = 1, // size of permission list - .aclsNum = 0, - .dcaps = nullptr, - .perms = perms, - .acls = nullptr, - .aplStr = "system_core", - }; + std::string dumpInfo; + AtmToolsParamInfo info; + info.processName = process; + AccessTokenKit::DumpTokenInfo(info, dumpInfo); + size_t pos = dumpInfo.find("\"tokenID\": "); + if (pos == std::string::npos) { + return 0; + } + pos += std::string("\"tokenID\": ").length(); + std::string numStr; + while (pos < dumpInfo.length() && std::isdigit(dumpInfo[pos])) { + numStr += dumpInfo[pos]; + ++pos; + } - infoInstance.processName = "AddPermissionUsedRecord"; - tokenID = GetAccessTokenId(&infoInstance); - SetSelfTokenID(tokenID); - AccessTokenKit::ReloadNativeTokenInfo(); - delete[] perms; + std::istringstream iss(numStr); + AccessTokenID tokenID; + iss >> tokenID; + return tokenID; } int32_t main(int argc, char *argv[]) @@ -55,7 +55,9 @@ int32_t main(int argc, char *argv[]) return 0; } - NativeTokenGet(); + AccessTokenID mockTokenID = GetNativeTokenIdFromProcess("camera_service"); + SetSelfTokenID(mockTokenID); + std::cout << "#SelfTokenID: " << GetSelfTokenID() << std::endl; uint32_t tokenId = static_cast(atoi(argv[1])); // 1: index std::string permisisionName = argv[2]; // 2: index diff --git a/interfaces/kits/js/napi/accesstoken/include/napi_request_permission.h b/interfaces/kits/js/napi/accesstoken/include/napi_request_permission.h index 45cd3f3905961fae5d4da412c5c66caa42e98f4c..a10df1b66b974aba82be65a51b494dec0f704055 100644 --- a/interfaces/kits/js/napi/accesstoken/include/napi_request_permission.h +++ b/interfaces/kits/js/napi/accesstoken/include/napi_request_permission.h @@ -34,6 +34,10 @@ struct RequestAsyncContext : public AtManagerAsyncWorkData { { this->env = env; } + void SetErrorResult(int32_t errorCode, const std::string& errorMsg) { + result.errorCode = errorCode; + result.errorMsg = errorMsg; + } AccessTokenID tokenId = 0; std::string bundleName = ""; diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp index cf0043e310a4ef24b92fcebc60b181d7306eeac4..f6bbbee66c5a49b658cd94a3af4b9894185ce1e0 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -302,6 +302,9 @@ int32_t AccessTokenManagerService::GetSelfPermissionsState(std::vector