From d37fcbb3d68db34867631689eb2e9006779a2016 Mon Sep 17 00:00:00 2001 From: jiangwei Date: Fri, 29 Aug 2025 09:02:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20sto=E7=B3=BB=E5=88=97=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangwei --- include/utilities.h | 10 +++++++++- interfaces/kits/js/napi/hiperf_client_napi.cpp | 5 +++-- src/subcommand_record.cpp | 10 +++++++++- src/utilities.cpp | 5 ++++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/include/utilities.h b/include/utilities.h index 001cec2..f22371f 100644 --- a/include/utilities.h +++ b/include/utilities.h @@ -382,7 +382,15 @@ void CollectPidsByAppname(std::set &pids, const Container& appPackage) } std::string fileName {basePath + subDir + cmdline}; if (IsSameCommand(ReadFileToString(fileName), appPackage)) { - pids.emplace(std::stoul(subDir, nullptr)); + unsigned long tempPid = 0; + char *endPtr = nullptr; + errno = 0; + tempPid = std::strtoul(subDir.c_str(), &endPtr, 10); // 10 : decimal scale + if (endPtr == subDir.c_str() || *endPtr != '\0' || errno != 0) { + HLOGE("subDir convert to tempPid failed, subDir: %s", subDir.c_str()); + return; + } + pids.emplace(static_cast(tempPid)); } } } diff --git a/interfaces/kits/js/napi/hiperf_client_napi.cpp b/interfaces/kits/js/napi/hiperf_client_napi.cpp index 5248c51..c97c69c 100644 --- a/interfaces/kits/js/napi/hiperf_client_napi.cpp +++ b/interfaces/kits/js/napi/hiperf_client_napi.cpp @@ -64,8 +64,9 @@ static std::vector StringSplitToInt(const std::string& text, char delimiter std::string token; std::istringstream tokenStream(text); while (std::getline(tokenStream, token, delimiter)) { - if (IsNumeric(token)) { - tokens.push_back(std::stoi(token)); + int num = 0; + if (IsStringToIntSuccess(token, num)) { + tokens.push_back(num); } } return tokens; diff --git a/src/subcommand_record.cpp b/src/subcommand_record.cpp index e0ed4e2..d422ce4 100644 --- a/src/subcommand_record.cpp +++ b/src/subcommand_record.cpp @@ -801,7 +801,15 @@ pid_t SubCommandRecord::GetPidFromAppPackage(const pid_t oldPid, const uint64_t } std::string fileName {basePath + subDir + cmdline}; if (IsSameCommand(ReadFileToString(fileName), appPackage_)) { - res = static_cast(std::stoul(subDir, nullptr)); + unsigned long tempPid = 0; + char *endPtr = nullptr; + errno = 0; + tempPid = std::strtoul(subDir.c_str(), &endPtr, 10); // 10 : decimal scale + if (endPtr == subDir.c_str() || *endPtr != '\0' || errno != 0) { + HLOGE("subDir convert to tempPid failed, subDir: %s", subDir.c_str()); + return -1; + } + res = static_cast(tempPid); HLOGD("[GetAppPackagePid]: get appPid for %s is %d", appPackage_.c_str(), res); HIPERF_HILOGD(MODULE_DEFAULT, "[GetAppPackagePid] get appPid %{public}d for app", res); diff --git a/src/utilities.cpp b/src/utilities.cpp index b5e8e65..ddf1e07 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -815,7 +815,10 @@ bool LittleMemory() std::string line; while (getline(file, line)) { if (line.find("MemTotal:") != std::string::npos) { - int memSize = stoi(line.substr(line.find(":") + 1)); + int memSize = 0; + if (!IsStringToIntSuccess(line.substr(line.find(":") + 1), memSize)) { + return false; + } CHECK_TRUE(memSize >= (LITTLE_MEMORY_SIZE * MULTIPLE_SIZE * MULTIPLE_SIZE), true, 0, ""); } } -- Gitee