!690 judge map execuable before call CreateFromHap

Merge pull request !690 from yuyanqing/master
This commit is contained in:
openharmony_ci 2024-12-31 09:39:15 +00:00 committed by Gitee
commit 02a084254a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 39 additions and 3 deletions

View File

@ -416,6 +416,7 @@ ohos_executable("hiperf") {
"faultloggerd:libunwinder",
"hilog:libhilog",
"hisysevent:libhisysevent",
"ipc:ipc_single",
"protobuf:protobuf_lite",
]

View File

@ -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;

View File

@ -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" ]

View File

@ -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_,

View File

@ -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