diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index aec7bbd0abd56c0571e4e4a9bc2221e8f914ff5c..cb5b7ef2c0b2a796c7f9365fadf25969941acab9 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -58,12 +58,13 @@ using namespace std; REGISTER_SYSTEM_ABILITY_BY_ID(Service, FILEMANAGEMENT_BACKUP_SERVICE_SA_ID, false); /* Shell/Xts user id equal to 0/1, we need set default 100 */ -static inline int32_t GetUserIdDefault(int32_t userId) +static inline int32_t GetUserIdDefault() { - if ((userId == BConstants::SYSTEM_UID) || (userId == BConstants::XTS_UID)) { + auto multiuser = BMultiuser::ParseUid(IPCSkeleton::GetCallingUid()); + if ((multiuser.userId == BConstants::SYSTEM_UID) || (multiuser.userId == BConstants::XTS_UID)) { return BConstants::DEFAULT_USER_ID; } - return userId; + return multiuser.userId; } void Service::OnStart() @@ -89,7 +90,7 @@ UniqueFd Service::GetLocalCapabilities() Only called by restore app before InitBackupSession, so there must be set init userId. */ - session_->SetSessionUserId(GetUserIdDefault(IPCSkeleton::GetCallingUid())); + session_->SetSessionUserId(GetUserIdDefault()); VerifyCaller(); string path = BConstants::GetSaBundleBackupRootDir(session_->GetSessionUserId()); BExcepUltils::VerifyPath(path, false); @@ -177,7 +178,7 @@ ErrCode Service::InitRestoreSession(sptr remote) .clientToken = IPCSkeleton::GetCallingTokenID(), .scenario = IServiceReverse::Scenario::RESTORE, .clientProxy = remote, - .userId = GetUserIdDefault(IPCSkeleton::GetCallingUid()), + .userId = GetUserIdDefault(), }); return BError(BError::Codes::OK); } catch (const BError &e) { @@ -200,7 +201,7 @@ ErrCode Service::InitBackupSession(sptr remote) .clientToken = IPCSkeleton::GetCallingTokenID(), .scenario = IServiceReverse::Scenario::BACKUP, .clientProxy = remote, - .userId = GetUserIdDefault(IPCSkeleton::GetCallingUid()), + .userId = GetUserIdDefault(), }); return BError(BError::Codes::OK); } catch (const BError &e) {