From 5406357a2b2d2e548bc29a1e3409e5839c80cab9 Mon Sep 17 00:00:00 2001 From: shufewhx Date: Fri, 26 May 2023 06:33:20 +0000 Subject: [PATCH] fix processskeleton double free problem in fuzz test Signed-off-by: shufewhx --- ipc/native/src/core/include/process_skeleton.h | 4 ++-- ipc/native/src/core/source/ipc_object_proxy.cpp | 2 +- ipc/native/src/core/source/process_skeleton.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ipc/native/src/core/include/process_skeleton.h b/ipc/native/src/core/include/process_skeleton.h index 415f103..66e3fba 100644 --- a/ipc/native/src/core/include/process_skeleton.h +++ b/ipc/native/src/core/include/process_skeleton.h @@ -27,7 +27,7 @@ namespace OHOS { class ProcessSkeleton : public virtual RefBase { public: - static sptr GetInstance(); + static ProcessSkeleton* GetInstance(); sptr GetRegistryObject(); void SetRegistryObject(sptr &object); void SetSamgrFlag(bool flag); @@ -43,7 +43,7 @@ private: ProcessSkeleton() = default; ~ProcessSkeleton(); - static sptr instance_; + static ProcessSkeleton* instance_; static std::mutex mutex_; std::shared_mutex objMutex_; sptr registryObject_ = nullptr; diff --git a/ipc/native/src/core/source/ipc_object_proxy.cpp b/ipc/native/src/core/source/ipc_object_proxy.cpp index 0279361..9380083 100644 --- a/ipc/native/src/core/source/ipc_object_proxy.cpp +++ b/ipc/native/src/core/source/ipc_object_proxy.cpp @@ -523,7 +523,7 @@ int IPCObjectProxy::GetProtoInfo() MessageParcel data, reply; MessageOption option; int err = SendRequestInner(true, GET_PROTO_INFO, data, reply, option); - if (err != ERR_NONE) { + if (err != ERR_NONE && err != -EBADMSG) { ZLOGW(LABEL, "GET_PROTO_INFO transact return error = %{public}d", err); return IRemoteObject::IF_PROT_ERROR; } diff --git a/ipc/native/src/core/source/process_skeleton.cpp b/ipc/native/src/core/source/process_skeleton.cpp index b5a072c..7aa2543 100644 --- a/ipc/native/src/core/source/process_skeleton.cpp +++ b/ipc/native/src/core/source/process_skeleton.cpp @@ -22,10 +22,10 @@ namespace OHOS { static constexpr OHOS::HiviewDFX::HiLogLabel LOG_LABEL = { LOG_CORE, LOG_ID_IPC, "ProcessSkeleton" }; -sptr ProcessSkeleton::instance_ = nullptr; +ProcessSkeleton* ProcessSkeleton::instance_ = nullptr; std::mutex ProcessSkeleton::mutex_; -sptr ProcessSkeleton::GetInstance() +ProcessSkeleton* ProcessSkeleton::GetInstance() { if (instance_ == nullptr) { std::lock_guard lockGuard(mutex_); -- GitLab