diff --git a/services/accountmgr/include/appaccount/app_account_authenticator_session.h b/services/accountmgr/include/appaccount/app_account_authenticator_session.h index 65ebb3247..cf850bedf 100644 --- a/services/accountmgr/include/appaccount/app_account_authenticator_session.h +++ b/services/accountmgr/include/appaccount/app_account_authenticator_session.h @@ -95,6 +95,7 @@ private: int32_t OnAddAccountImplicitlyDone(const AAFwk::Want &result) const; private: + std::mutex mutex_; sptr conn_ = nullptr; sptr clientDeathRecipient_ = nullptr; sptr serverDeathRecipient_ = nullptr; diff --git a/services/accountmgr/src/appaccount/app_account_authenticator_session.cpp b/services/accountmgr/src/appaccount/app_account_authenticator_session.cpp index a950add31..ec4d96f4d 100644 --- a/services/accountmgr/src/appaccount/app_account_authenticator_session.cpp +++ b/services/accountmgr/src/appaccount/app_account_authenticator_session.cpp @@ -139,6 +139,7 @@ ErrCode AppAccountAuthenticatorSession::Open() void AppAccountAuthenticatorSession::Close() { + std::lock_guard lock(mutex_); if ((authenticatorProxy_ != nullptr) && (authenticatorProxy_->AsObject() != nullptr)) { authenticatorProxy_->AsObject()->RemoveDeathRecipient(serverDeathRecipient_); } @@ -174,11 +175,11 @@ ErrCode AppAccountAuthenticatorSession::AddClientDeathRecipient() void AppAccountAuthenticatorSession::OnAbilityConnectDone( const AppExecFwk::ElementName &element, const sptr &remoteObject, int32_t resultCode) { + std::lock_guard lock(mutex_); isConnected_ = true; AAFwk::Want errResult; authenticatorProxy_ = iface_cast(remoteObject); if ((!authenticatorProxy_) || (!authenticatorProxy_->AsObject())) { - ACCOUNT_LOGE("failed to cast app account authenticator proxy"); OnResult(ERR_JS_ACCOUNT_AUTHENTICATOR_SERVICE_EXCEPTION, errResult); return; }