!1841 memory plugin修改为仅debug应用可用,不安全数据过滤

Merge pull request !1841 from zhangyixin/master
This commit is contained in:
openharmony_ci 2024-09-06 08:32:31 +00:00 committed by Gitee
commit 054fc01fb8
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
7 changed files with 38 additions and 3 deletions

View File

@ -47,6 +47,7 @@ std::string GetClockStr(const int32_t clockId);
void AdaptSandboxPath(std::string& filePath, int pid);
int32_t GetPackageUid(const std::string &name);
bool GetCurrentUserId(int32_t &userId);
bool IsUserMode();
bool GetDeveloperMode();
bool IsBetaVersion();
std::pair<bool, std::string> CheckNotExistsFilePath(const std::string& filePath);

View File

@ -543,6 +543,16 @@ bool ReadFile(const std::string &filePath, const std::vector<std::string>& valid
return true;
}
bool IsUserMode()
{
std::string debugMode = "0";
debugMode = OHOS::system::GetParameter("const.debuggable", debugMode);
if (debugMode != "0") {
PROFILER_LOG_INFO(LOG_CORE, "It is not user mode!");
}
return debugMode == "0";
}
std::string GetErrorMsg()
{
const int bufSize = 256;

View File

@ -30,6 +30,7 @@ ohos_source_set("memdataplugin_source") {
"${OHOS_PROFILER_DIR}/device/base/include",
]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/proto_encoder:proto_encoder_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/memory_data:memory_data_cpp",
"${OHOS_PROFILER_DIR}/protos/types/plugins/memory_data:memory_data_encoder",

View File

@ -26,7 +26,7 @@
#include <memory>
#include <string>
#include <sys/mman.h>
#include "common.h"
#include "logging.h"
#include "memory_plugin_result.pb.h"
@ -331,8 +331,13 @@ private:
findMapHead = true;
if (isReportSmaps) {
smapsInfo = processMemoryInfo.add_smapinfo();
smapsInfo->set_start_addr(smapsHeadInfo.startAddrStr);
smapsInfo->set_end_addr(smapsHeadInfo.endAddrStr);
if (!COMMON::IsUserMode()) {
smapsInfo->set_start_addr(smapsHeadInfo.startAddrStr);
smapsInfo->set_end_addr(smapsHeadInfo.endAddrStr);
} else {
smapsInfo->set_start_addr("");
smapsInfo->set_end_addr("");
}
smapsInfo->set_permission(smapsHeadInfo.permission);
smapsInfo->set_path(smapsHeadInfo.path);
smapsInfo->set_category(ParseCategory(smapsHeadInfo));

View File

@ -194,6 +194,9 @@ int MemoryDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
if (protoConfig_.pid().size() > 0) {
for (int i = 0; i < protoConfig_.pid().size(); i++) {
int32_t pid = protoConfig_.pid(i);
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
continue;
}
pidFds_.emplace(pid, OpenProcPidFiles(pid));
}
}
@ -344,6 +347,9 @@ template <typename T, typename S> void MemoryDataPlugin::WriteMemoryData(T& memo
for (int i = 0; i < protoConfig_.pid().size(); i++) {
int32_t pid = protoConfig_.pid(i);
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
continue;
}
auto* processinfo = memoryDataProto.add_processesinfo();
if (protoConfig_.report_process_mem_info()) {
WriteProcinfoByPidfds(*processinfo, pid);
@ -431,6 +437,9 @@ int MemoryDataPlugin::Stop()
template <typename T> void MemoryDataPlugin::WriteProcinfoByPidfds(T& processMemoryInfo, int32_t pid)
{
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
return;
}
char* end = nullptr;
int32_t readSize;
@ -1286,6 +1295,9 @@ template <typename T> void MemoryDataPlugin::WriteDumpProcessInfo(T& dataProto)
{
for (int i = 0; i < protoConfig_.pid().size(); i++) {
int32_t pid = protoConfig_.pid(i);
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
continue;
}
auto* processesInfo = dataProto.add_processesinfo();
processesInfo->set_pid(pid);
@ -1361,6 +1373,10 @@ template <typename T> void MemoryDataPlugin::WriteManagerServiceInfo(T& dataProt
template <typename T> void MemoryDataPlugin::WriteProfileMemInfo(T& dataProto)
{
for (int i = 0; i < protoConfig_.pid().size(); i++) {
int32_t pid = protoConfig_.pid(i);
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
continue;
}
std::string file = "";
if (!protoConfig_.report_fake_data()) {
if (strcmp(testpath_, "/proc") == 0) {

View File

@ -29,6 +29,7 @@ ohos_unittest("memdataplugin_ut") {
"unittest/memory_data_plugin_unittest.cpp",
]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/memory_plugin:memdataplugin_source",
"${OHOS_PROFILER_DIR}/device/plugins/memory_plugin:memorytest",
"${OHOS_PROFILER_DIR}/protos/types/plugins/memory_data:memory_data_cpp",

View File

@ -25,6 +25,7 @@ config("module_private_config") {
ohos_unittest("plugin_module_api_ut") {
module_out_path = module_output_path
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/proto_encoder:proto_encoder_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/memory_data:memory_data_cpp",
"${OHOS_PROFILER_DIR}/protos/types/plugins/sample_data:sample_data_cpp",