diff --git a/services/distributedhardwarefwkservice/src/componentloader/component_loader.cpp b/services/distributedhardwarefwkservice/src/componentloader/component_loader.cpp index 1e48f2812ae73d6ba7fa39fdf943f91464455aaa..7c996edb382ada98a34ea06e407cada2b41ff80d 100644 --- a/services/distributedhardwarefwkservice/src/componentloader/component_loader.cpp +++ b/services/distributedhardwarefwkservice/src/componentloader/component_loader.cpp @@ -365,11 +365,14 @@ void ComponentLoader::StoreLocalDHVersionInDB() void *ComponentLoader::GetHandler(const std::string &soName) { - if (soName.length() == 0 || soName.length() > PATH_MAX) { - DHLOGE("File canonicalization failed, soName: %{public}s", soName.c_str()); + char path[PATH_MAX + 1] = {0x00}; + if (soName.length() == 0 || soName.length() > PATH_MAX || realpath(soName.c_str(), path) == nullptr) { + std::string loadPath(path); + DHLOGE("File canonicalization failed, soName: %{public}s, loadPath:%{public}s", soName.c_str(), + loadPath.c_str()); return nullptr; } - void *pHandler = dlopen(soName.c_str(), RTLD_LAZY | RTLD_NODELETE); + void *pHandler = dlopen(path, RTLD_LAZY | RTLD_NODELETE); if (pHandler == nullptr) { DHLOGE("so: %{public}s load failed, failed reason: %{public}s", soName.c_str(), dlerror()); HiSysEventWriteMsg(DHFWK_INIT_FAIL, OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, diff --git a/utils/src/histreamer_query_tool.cpp b/utils/src/histreamer_query_tool.cpp index 86a6ff5d9d22f9dfd39d4a6c07939fd7a728314b..cf21cf1399ffc7b92892337fe74100854f93676e 100644 --- a/utils/src/histreamer_query_tool.cpp +++ b/utils/src/histreamer_query_tool.cpp @@ -48,6 +48,12 @@ void HiStreamerQueryTool::Init() return; } DHLOGI("Start Init HiStreamer Query SO"); + char path[PATH_MAX + 1] = {0x00}; + if (LOAD_SO.length() == 0 || LOAD_SO.length() > PATH_MAX || realpath(LOAD_SO.c_str(), path) == nullptr) { + std::string loadPath(path); + DHLOGE("File canonicalization failed, loadPath: %{public}s", loadPath.c_str()); + return; + } void *pHandler = dlopen(LOAD_SO.c_str(), RTLD_LAZY | RTLD_NODELETE); if (pHandler == nullptr) { DHLOGE("libhistreamer_ability_querier.z.so handler load failed, failed reason : %{public}s", dlerror());