From fa2774298ffbb23c54fc6c0c4094cfe977d68764 Mon Sep 17 00:00:00 2001 From: yuyanqinghw Date: Mon, 30 Dec 2024 21:52:58 +0800 Subject: [PATCH 1/3] judge map execuable before call CreateFromHap Signed-off-by: yuyanqinghw --- src/symbols_file.cpp | 17 ++++++++++++++--- .../common/native/symbols_file_test.cpp | 2 ++ test/unittest/common/native/utilities_test.cpp | 15 +++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/symbols_file.cpp b/src/symbols_file.cpp index d82948b..e7ffcce 100644 --- a/src/symbols_file.cpp +++ b/src/symbols_file.cpp @@ -231,7 +231,14 @@ protected: } if (elfFile_ == nullptr) { if (StringEndsWith(elfPath, ".hap")) { - CHECK_TRUE(map == nullptr, false, 1, "map should not be nullptr."); + if (map == nullptr) { + HLOGW("map should not be nullptr."); + return false; + } + if (!map->IsMapExec()) { + HLOGW("map is not exec, no need parse elf."); + return false; + } elfFile_ = DfxElf::CreateFromHap(elfPath, map->prevMap, map->offset); HLOGD("try create elf from hap"); } else { @@ -415,6 +422,10 @@ private: #endif if (elfFile_ == nullptr) { if (StringEndsWith(elfPath, ".hap") && map != nullptr) { + if (!map->IsMapExec()) { + HLOGW("map is not exec, no need parse elf."); + return false; + } elfFile_ = DfxElf::CreateFromHap(elfPath, map->prevMap, map->offset); map->elf = elfFile_; } else { @@ -974,7 +985,7 @@ public: } CHECK_TRUE(!onRecording_, true, 0, ""); - if (!IsHapAbc()) { + if (!IsHapAbc() && map_->IsMapExec()) { ElfFileSymbols::LoadDebugInfo(map, ""); } debugInfoLoaded_ = true; @@ -987,7 +998,7 @@ public: HLOGD("map ptr:%p, map name:%s", map.get(), map->name.c_str()); CHECK_TRUE(symbolsLoaded_ || !onRecording_, true, 0, ""); symbolsLoaded_ = true; - if (!IsHapAbc()) { + if (!IsHapAbc() && map_->IsMapExec()) { ElfFileSymbols::LoadSymbols(map, ""); } return true; diff --git a/test/unittest/common/native/symbols_file_test.cpp b/test/unittest/common/native/symbols_file_test.cpp index b7fb119..6fa8ba0 100644 --- a/test/unittest/common/native/symbols_file_test.cpp +++ b/test/unittest/common/native/symbols_file_test.cpp @@ -811,9 +811,11 @@ HWTEST_F(SymbolsFileTest, CreateSymbolsFile, TestSize.Level1) EXPECT_NE(SymbolsFile::CreateSymbolsFile(), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_KERNEL_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_KERNEL_MODULE_FILE), nullptr); + EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_KERNEL_THREAD_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_ELF_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_JAVA_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_JS_FILE), nullptr); + EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_HAP_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SYMBOL_UNKNOW_FILE), nullptr); EXPECT_NE(SymbolsFile::CreateSymbolsFile(SymbolsFileType(-1)), nullptr); EXPECT_EQ(SymbolsFile::CreateSymbolsFile(SymbolsFileType(-2))->symbolFileType_, diff --git a/test/unittest/common/native/utilities_test.cpp b/test/unittest/common/native/utilities_test.cpp index bd0508f..2315d13 100644 --- a/test/unittest/common/native/utilities_test.cpp +++ b/test/unittest/common/native/utilities_test.cpp @@ -811,6 +811,21 @@ HWTEST_F(UtilitiesTest, IsSameCommand2, TestSize.Level1) v = {"", "a"}; EXPECT_EQ(IsSameCommand("a", v), true); } + +/** + * @tc.name: IsArkJsFile + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(UtilitiesTest, IsArkJsFile, TestSize.Level1) +{ + EXPECT_EQ(IsArkJsFile("test.hap"), true); + EXPECT_EQ(IsArkJsFile("[anon:ArkTS Code:test.so/buffer.js]"), true); + EXPECT_EQ(IsArkJsFile("test.hsp"), true); + EXPECT_EQ(IsArkJsFile("test.abc"), true); + EXPECT_EQ(IsArkJsFile("test.hqf"), true); + EXPECT_EQ(IsArkJsFile("test.so"), false); +} } // namespace HiPerf } // namespace Developtools } // namespace OHOS -- Gitee From 18bde66d61f74292b584228df8fd04f11defd9cb Mon Sep 17 00:00:00 2001 From: yuyanqinghw Date: Tue, 31 Dec 2024 14:39:10 +0800 Subject: [PATCH 2/3] judge map execuable before call CreateFromHap Signed-off-by: yuyanqinghw --- BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD.gn b/BUILD.gn index 4e4123c..4b77f02 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -416,6 +416,7 @@ ohos_executable("hiperf") { "faultloggerd:libunwinder", "hilog:libhilog", "hisysevent:libhisysevent", + "ipc:ipc_single", "protobuf:protobuf_lite", ] -- Gitee From 1e2304a561070df87c6ea25dadb9bddde1bd9959 Mon Sep 17 00:00:00 2001 From: yuyanqinghw Date: Tue, 31 Dec 2024 16:21:16 +0800 Subject: [PATCH 3/3] judge map execuable before call CreateFromHap Signed-off-by: yuyanqinghw --- test/BUILD.gn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/BUILD.gn b/test/BUILD.gn index 406da8e..e48487b 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -103,6 +103,7 @@ ohos_unittest("hiperf_unittest") { "faultloggerd:libunwinder", "googletest:gmock", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] cflags = [ @@ -132,6 +133,7 @@ ohos_fuzztest("CommandLineFuzzTest") { "c_utils:utils", "faultloggerd:libunwinder", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] @@ -151,6 +153,7 @@ ohos_fuzztest("LibReportFuzzTest") { "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] @@ -167,6 +170,7 @@ ohos_fuzztest("ClientApiFuzzTest") { "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] @@ -183,6 +187,7 @@ ohos_fuzztest("SpeDecoderFuzzTest") { "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] @@ -201,6 +206,7 @@ ohos_fuzztest("PerfFileFuzzTest") { "c_utils:utils", "faultloggerd:libunwinder", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] @@ -218,6 +224,7 @@ ohos_fuzztest("PerfFileFormatFuzzTest") { "c_utils:utils", "faultloggerd:libunwinder", "hilog:libhilog", + "ipc:ipc_single", "protobuf:protobuf_lite", ] defines = [ "FUZZER_TEST" ] -- Gitee