diff --git a/services/engine/src/update_service_impl_firmware.cpp b/services/engine/src/update_service_impl_firmware.cpp index 040f9cacd85b475c91482f12d4197e1e02938d51..6f64138e5aaeec30e393f5abd9e218a6f313d5b4 100644 --- a/services/engine/src/update_service_impl_firmware.cpp +++ b/services/engine/src/update_service_impl_firmware.cpp @@ -182,7 +182,13 @@ int32_t UpdateServiceImplFirmware::GetNewVersionDescription(const UpgradeInfo &i return INT_CALL_SUCCESS; } std::string dataXml = FileUtils::ReadDataFromFile(changelogFilePath); - std::string dataXmlFinal = dataXml.substr(dataXml.find_first_of("|") + 1, dataXml.size()); + size_t startIndex = dataXml.find_first_of("|"); + if (startIndex == std::string::npos) { + FIRMWARE_LOGE("dataXml not found |"); + businessError.Build(CallResult::FAIL, "GetNewVersionDescription failed"); + return INT_CALL_SUCCESS; + } + std::string dataXmlFinal = dataXml.substr(startIndex + 1, dataXml.size()); GetChangelogContent(dataXmlFinal, descriptionOptions.language); componentDescription.descriptionInfo.content = dataXmlFinal; componentDescription.descriptionInfo.descriptionType = @@ -225,7 +231,13 @@ int32_t UpdateServiceImplFirmware::GetCurrentVersionDescription(const UpgradeInf return INT_CALL_SUCCESS; } std::string dataXml = FileUtils::ReadDataFromFile(changelogFilePath); - std::string dataXmlFinal = dataXml.substr(dataXml.find_first_of("|") + 1, dataXml.size()); + size_t startIndex = dataXml.find_first_of("|"); + if (startIndex == std::string::npos) { + FIRMWARE_LOGE("dataXml not found |"); + businessError.Build(CallResult::FAIL, "GetCurrentVersionDescription failed"); + return INT_CALL_SUCCESS; + } + std::string dataXmlFinal = dataXml.substr(startIndex + 1, dataXml.size()); GetChangelogContent(dataXmlFinal, descriptionOptions.language); descriptionContent.descriptionInfo.content = dataXmlFinal; descriptionContent.descriptionInfo.descriptionType =