Description: granturipermmsion

Sig:SIG_ApplicationFramework
Feature or Bugfix:Feature
Binary Source:No

Signed-off-by: gongyuechen <gongyuechen@huawei.com>
This commit is contained in:
gongyuechen
2023-03-27 12:47:58 +00:00
parent 2596476186
commit 175168e985
5 changed files with 12 additions and 9 deletions
@@ -126,7 +126,6 @@ private:
ThrowError(engine, AbilityErrorCode::ERROR_CODE_INVALID_PARAM);
return engine.CreateUndefined();
}
AsyncTask::CompleteCallback complete =
[uriStr, bundleName](NativeEngine& engine, AsyncTask& task, int32_t status) {
Uri uri(uriStr);
@@ -135,13 +134,13 @@ private:
if (errCode == ERR_OK) {
task.ResolveWithNoError(engine, engine.CreateUndefined());
} else if (errCode == AAFwk::CHECK_PERMISSION_FAILED) {
task.Reject(engine, CreateNoPermissionError(engine, "ohos.permission.PROXY_AUTHORIZATION_URI"));
task.Reject(engine, CreateNoPermissionError(engine,
"Do not have permission ohos.permission.PROXY_AUTHORIZATION_URI"));
} else {
task.Reject(engine, CreateJsError(engine, ERR_ABILITY_RUNTIME_EXTERNAL_INTERNAL_ERROR,
"Internal Error."));
}
};
NativeValue* lastParam = (info.argc == argCountThree) ? info.argv[argCountTwo] : nullptr;
NativeValue* result = nullptr;
AsyncTask::Schedule("JsUriPermMgr::OnRevokeUriPermission",
@@ -42,7 +42,6 @@ void UriPermissionManagerClient::RevokeUriPermission(const Security::AccessToken
if (uriPermMgr) {
return uriPermMgr->RevokeUriPermission(tokenId);
}
return;
}
int UriPermissionManagerClient::RevokeUriPermissionManually(const Uri &uri, const std::string bundleName)
@@ -1200,7 +1200,6 @@ void AbilityRecord::Terminate(const Closure &task)
// earlier than above actions.
currentState_ = AbilityState::TERMINATING;
lifecycleDeal_->Terminate(want_, lifeCycleStateInfo_);
RevokeUriPermission();
}
void AbilityRecord::ConnectAbility()
@@ -55,8 +55,7 @@ private:
void ClearSMProxy();
int GrantUriPermissionImpl(const Uri &uri, unsigned int flag,
Security::AccessToken::AccessTokenID fromTokenId,
Security::AccessToken::AccessTokenID targetTokenId,
int autoremove);
Security::AccessToken::AccessTokenID targetTokenId, int autoremove);
Security::AccessToken::AccessTokenID GetTokenIdByBundleName(const std::string bundleName);
class BMSOrSMDeathRecipient : public IRemoteObject::DeathRecipient {
@@ -62,7 +62,7 @@ int UriPermissionManagerStubImpl::GrantUriPermission(const Uri &uri, unsigned in
tmpFlag = Want::FLAG_AUTH_READ_URI_PERMISSION;
}
auto&& scheme = uri_inner.GetScheme();
if (scheme != "file" && scheme != "dataShare") {
if (scheme != "file") {
HILOG_WARN("only support file or dataShare uri.");
return INNER_ERR;
}
@@ -118,6 +118,14 @@ int UriPermissionManagerStubImpl::GrantUriPermissionImpl(const Uri &uri, unsigne
void UriPermissionManagerStubImpl::RevokeUriPermission(const TokenId tokenId)
{
HILOG_DEBUG("Start to remove uri permission.");
auto callerTokenId = IPCSkeleton::GetCallingTokenID();
Security::AccessToken::NativeTokenInfo nativeInfo;
Security::AccessToken::AccessTokenKit::GetNativeTokenInfo(callerTokenId, nativeInfo);
HILOG_DEBUG("callerprocessName : %{public}s", nativeInfo.processName.c_str());
if (nativeInfo.processName != "fodundation") {
HILOG_ERROR("RevokeUriPermission can only be called by foundation");
return;
}
std::vector<std::string> uriList;
{
std::lock_guard<std::mutex> guard(mutex_);
@@ -148,7 +156,6 @@ void UriPermissionManagerStubImpl::RevokeUriPermission(const TokenId tokenId)
if (!uriList.empty()) {
storageMgrProxy->DeleteShareFile(tokenId, uriList);
}
return;
}
int UriPermissionManagerStubImpl::RevokeUriPermissionManually(const Uri &uri, const std::string bundleName)