diff --git a/frameworks/native/ability/native/ability.cpp b/frameworks/native/ability/native/ability.cpp index db64c4208d984b2aba5d426c004e4f798038b703..e1c4afb68975a849edc027bc0acb765ea5c13dd4 100644 --- a/frameworks/native/ability/native/ability.cpp +++ b/frameworks/native/ability/native/ability.cpp @@ -137,6 +137,10 @@ void Ability::Init(const std::shared_ptr &abilityInfo, const std::s #endif lifecycle_ = std::make_shared(); abilityLifecycleExecutor_ = std::make_shared(); + if (abilityLifecycleExecutor_ == nullptr) { + TAG_LOGE(AAFwkTag::ABILITY, "null abilityLifecycleExecutor_"); + return; + } abilityLifecycleExecutor_->DispatchLifecycleState(AbilityLifecycleExecutor::LifecycleState::INITIAL); if (abilityContext_ != nullptr) { @@ -642,7 +646,9 @@ void Ability::OnEventDispatch() void Ability::SetWant(const AAFwk::Want &want) { - setWant_ = std::make_shared(want); + if (setWant_ != nullptr) { + setWant_ = std::make_shared(want); + } } std::shared_ptr Ability::GetWant() diff --git a/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp b/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp index bc106b9372c9c54f62488589c4e189b6b523dc17..bbd3499a276642baf983a3920f1097f428bd4f50 100644 --- a/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp +++ b/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp @@ -362,11 +362,13 @@ private: if (callerCallBackObj_ == nullptr) { TAG_LOGE(AAFwkTag::DEFAULT, "null CallBacker"); ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); + return CreateJsUndefined(env); } if (!releaseCallFunc_) { TAG_LOGE(AAFwkTag::DEFAULT, "null releaseFunc"); ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); + return CreateJsUndefined(env); } callee_ = nullptr; callerCallBackObj_->SetCallBack(nullptr); @@ -375,6 +377,7 @@ private: if (innerErrorCode != ERR_OK) { TAG_LOGE(AAFwkTag::DEFAULT, "ReleaseAbility failed %{public}d", static_cast(innerErrorCode)); ThrowError(env, innerErrorCode); + return CreateJsUndefined(env); } return CreateJsUndefined(env); @@ -387,6 +390,7 @@ private: if (info.argc < argcOne) { TAG_LOGE(AAFwkTag::DEFAULT, "Invalid argc"); ThrowTooFewParametersError(env); + return CreateJsUndefined(env); } bool isCallable = false; napi_is_callable(env, info.argv[0], &isCallable); diff --git a/frameworks/native/runtime/ets_runtime.cpp b/frameworks/native/runtime/ets_runtime.cpp index bd546e081bbcfbfed060cf4c7ab8d231c6a77820..ad2fce8a738e20230b5c81e7d2f83cc6b1965327 100644 --- a/frameworks/native/runtime/ets_runtime.cpp +++ b/frameworks/native/runtime/ets_runtime.cpp @@ -149,6 +149,10 @@ bool ETSRuntime::PostFork(const Options &options, std::unique_ptr &js } if (jsRuntime_ != nullptr) { auto vm = static_cast(jsRuntime_.get())->GetEcmaVm(); + if (vm == nullptr) { + TAG_LOGE(AAFwkTag::ETSRUNTIME, "null js vm"); + return false; + } panda::JSNApi::SetHostResolveBufferTrackerForHybridApp( vm, HybridJsModuleReader(options.bundleName, options.hapPath, options.isUnique)); } diff --git a/frameworks/native/runtime/js_runtime.cpp b/frameworks/native/runtime/js_runtime.cpp index 0095eac0fc4af7d2f876a3bbe2a018fdd4149f7c..6a2634650c09bd19409b022277ac5be213486f25 100644 --- a/frameworks/native/runtime/js_runtime.cpp +++ b/frameworks/native/runtime/js_runtime.cpp @@ -1666,6 +1666,7 @@ void JsRuntime::SetDeviceDisconnectCallback(const std::function &cb) void JsRuntime::SetStopPreloadSoCallback(const std::function &callback) { auto vm = GetEcmaVm(); + CHECK_POINTER(vm); panda::JSNApi::SetStopPreLoadSoCallback(vm, callback); } diff --git a/services/abilitymgr/include/recovery_info_timer.h b/services/abilitymgr/include/recovery_info_timer.h index 7f795de10ed8d96609b4dc378d9cacc0233ef990..4fd0af7f5ae9b5f0a363a60f22d4317cf51e5a22 100644 --- a/services/abilitymgr/include/recovery_info_timer.h +++ b/services/abilitymgr/include/recovery_info_timer.h @@ -33,7 +33,7 @@ struct RecoveryInfo { class RecoveryInfoTimer { RecoveryInfoTimer() = default; - ~RecoveryInfoTimer() = default; + virtual ~RecoveryInfoTimer() = default; public: static RecoveryInfoTimer& GetInstance(); diff --git a/services/abilitymgr/src/mission/mission_list_manager.cpp b/services/abilitymgr/src/mission/mission_list_manager.cpp index 838b6eca1f0c513b269f25db308819a180acb6d3..5b84b4d296d3ea601ca7556014aa92e5a96d4065 100644 --- a/services/abilitymgr/src/mission/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission/mission_list_manager.cpp @@ -4261,7 +4261,9 @@ int MissionListManager::PrepareClearMissionLocked(int missionId, const std::shar handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); return ERR_OK; } - handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); + if (handler) { + handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); + } return ClearMissionLocked(missionId, mission); } diff --git a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp index 48f7efdcf65841a353359437bc9e85c0edfbb843..eed37e91d8065d356d793d4da7bc8ecaae4f96a4 100644 --- a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp +++ b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp @@ -1384,6 +1384,9 @@ int UIAbilityLifecycleManager::CallAbilityLocked(const AbilityRequest &abilityRe return ERR_OK; } uiAbilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest); + if (uiAbilityRecord == nullptr) { + return INNER_ERR; + } uiAbilityRecord->SetOwnerMissionUserId(userId_); SetReceiverInfo(abilityRequest, uiAbilityRecord); } else {