From 96af331048a2ce9950478793ce77eb7699268906 Mon Sep 17 00:00:00 2001 From: wangjiadong Date: Mon, 25 Nov 2024 14:28:11 +0800 Subject: [PATCH 01/34] Signed-off-by: wangjiadong add dadian --- services/package/pkg_verify/pkg_verify_util.cpp | 3 +++ services/updater.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index 7e28cfd8..0af68631 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -125,6 +125,9 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); } + if (ret == PKG_SUCCESS) { + UPDATER_LAST_WORD("hash check success"); + } PKG_LOGI("verify package signature %s", ret == PKG_SUCCESS ? "successfull" : "failed"); return ret; } diff --git a/services/updater.cpp b/services/updater.cpp index 3644eace..20aa3aba 100644 --- a/services/updater.cpp +++ b/services/updater.cpp @@ -294,10 +294,12 @@ UpdaterStatus DoInstallUpdaterPackage(PkgManager::PkgManagerPtr pkgManager, Upda int ret = GetUpdatePackageInfo(pkgManager, upParams.updatePackage[upParams.pkgLocation]); if (ret != 0) { LOG(ERROR) << "get update package info fail"; + UPDATER_LAST_WORD(UPDATE_CORRUPT, "GetUpdatePackageInfo failed"); return UPDATE_CORRUPT; } if (!PreStartBinaryEntry(upParams.updatePackage[upParams.pkgLocation])) { LOG(ERROR) << "pre binary process failed"; + UPDATER_LAST_WORD(UPDATE_ERROR, "PreStartBinaryEntry failed"); return UPDATE_ERROR; } @@ -305,6 +307,7 @@ UpdaterStatus DoInstallUpdaterPackage(PkgManager::PkgManagerPtr pkgManager, Upda UpdaterStatus updateRet = StartUpdaterProc(pkgManager, upParams); if (updateRet != UPDATE_SUCCESS) { UPDATER_UI_INSTANCE.ShowUpdInfo(TR(UPD_INSTALL_FAIL)); + UPDATER_LAST_WORD(updateRet, "StartUpdaterProc failed"); LOG(ERROR) << "Install package failed."; } if (WriteResult(upParams.updatePackage[upParams.pkgLocation], @@ -467,7 +470,7 @@ UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterPara int pfd[DEFAULT_PIPE_NUM]; /* communication between parent and child */ if (pipe(pfd) < 0) { LOG(ERROR) << "Create pipe failed: "; - UPDATER_LAST_WORD(UPDATE_ERROR); + UPDATER_LAST_WORD(UPDATE_ERROR, "Create pipe failed"); return UPDATE_ERROR; } if (pkgManager == nullptr) { @@ -501,7 +504,7 @@ UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterPara pid_t pid = fork(); if (pid < 0) { ERROR_CODE(CODE_FORK_FAIL); - UPDATER_LAST_WORD(UPDATE_ERROR); + UPDATER_LAST_WORD(UPDATE_ERROR, "fork failed"); return UPDATE_ERROR; } @@ -516,6 +519,7 @@ UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterPara close(pipeWrite); // close write endpoint bool retryUpdate = false; if (HandlePipeMsg(upParams, pipeRead, retryUpdate) != UPDATE_SUCCESS) { + UPDATER_LAST_WORD(UPDATE_ERROR, "HandlePipeMsg failed"); return UPDATE_ERROR; } -- Gitee From db7ac43ebc4a97b544617ece297d68942d3434ca Mon Sep 17 00:00:00 2001 From: wangjiadong Date: Tue, 26 Nov 2024 11:56:13 +0800 Subject: [PATCH 02/34] Signed-off-by: wangjiadong fix --- .../package/pkg_verify/pkg_verify_util.cpp | 2 +- services/updater.cpp | 38 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index 0af68631..adaf844e 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -120,7 +120,7 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std } size_t srcDataLen = pkgStream->GetFileLength() - commentTotalLenAll - 2; - ret = HashCheck(pkgStream, srcDataLen, hash, path); + ret = HashCheck(pkgStream, srcDataLen, hash, path); if (ret != PKG_SUCCESS) { srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); diff --git a/services/updater.cpp b/services/updater.cpp index 20aa3aba..11803cc1 100644 --- a/services/updater.cpp +++ b/services/updater.cpp @@ -464,23 +464,8 @@ UpdaterStatus CheckProcStatus(pid_t pid, bool retryUpdate) return UPDATE_SUCCESS; } -UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) +static std::string GetBinaryPath(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) { - UPDATER_INIT_RECORD; - int pfd[DEFAULT_PIPE_NUM]; /* communication between parent and child */ - if (pipe(pfd) < 0) { - LOG(ERROR) << "Create pipe failed: "; - UPDATER_LAST_WORD(UPDATE_ERROR, "Create pipe failed"); - return UPDATE_ERROR; - } - if (pkgManager == nullptr) { - LOG(ERROR) << "pkgManager is nullptr"; - UPDATER_LAST_WORD(UPDATE_CORRUPT); - return UPDATE_CORRUPT; - } - - int pipeRead = pfd[0]; - int pipeWrite = pfd[1]; std::string fullPath = GetWorkPath() + std::string(UPDATER_BINARY); (void)Utils::DeleteFile(fullPath); @@ -500,6 +485,27 @@ UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterPara #ifdef WITH_SELINUX Restorecon(fullPath.c_str()); #endif // WITH_SELINUX + return fullPath; +} + +UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) +{ + UPDATER_INIT_RECORD; + int pfd[DEFAULT_PIPE_NUM]; /* communication between parent and child */ + if (pipe(pfd) < 0) { + LOG(ERROR) << "Create pipe failed: "; + UPDATER_LAST_WORD(UPDATE_ERROR, "Create pipe failed"); + return UPDATE_ERROR; + } + if (pkgManager == nullptr) { + LOG(ERROR) << "pkgManager is nullptr"; + UPDATER_LAST_WORD(UPDATE_CORRUPT); + return UPDATE_CORRUPT; + } + + int pipeRead = pfd[0]; + int pipeWrite = pfd[1]; + std::string fullPath = GetBinaryPath(pkgManager, upParams); pid_t pid = fork(); if (pid < 0) { -- Gitee From 00da026457c1d0adb1dd5aa2c8480c3664aeb753 Mon Sep 17 00:00:00 2001 From: wangjiadong Date: Tue, 26 Nov 2024 12:21:55 +0800 Subject: [PATCH 03/34] Signed-off-by: wangjiadong fix --- services/updater.cpp | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/services/updater.cpp b/services/updater.cpp index 11803cc1..ce59f33f 100644 --- a/services/updater.cpp +++ b/services/updater.cpp @@ -421,6 +421,7 @@ UpdaterStatus HandlePipeMsg(UpdaterParams &upParams, int pipeRead, bool &retryUp FILE* fromChild = fdopen(pipeRead, "r"); if (fromChild == nullptr) { LOG(ERROR) << "fdopen pipeRead failed"; + UPDATER_LAST_WORD(UPDATE_ERROR); return UPDATE_ERROR; } while (fgets(buffer, MAX_BUFFER_SIZE - 1, fromChild) != nullptr) { @@ -464,8 +465,23 @@ UpdaterStatus CheckProcStatus(pid_t pid, bool retryUpdate) return UPDATE_SUCCESS; } -static std::string GetBinaryPath(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) +UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) { + UPDATER_INIT_RECORD; + int pfd[DEFAULT_PIPE_NUM]; /* communication between parent and child */ + if (pipe(pfd) < 0) { + LOG(ERROR) << "Create pipe failed: "; + UPDATER_LAST_WORD(UPDATE_ERROR); + return UPDATE_ERROR; + } + if (pkgManager == nullptr) { + LOG(ERROR) << "pkgManager is nullptr"; + UPDATER_LAST_WORD(UPDATE_CORRUPT); + return UPDATE_CORRUPT; + } + + int pipeRead = pfd[0]; + int pipeWrite = pfd[1]; std::string fullPath = GetWorkPath() + std::string(UPDATER_BINARY); (void)Utils::DeleteFile(fullPath); @@ -485,27 +501,6 @@ static std::string GetBinaryPath(PkgManager::PkgManagerPtr pkgManager, UpdaterPa #ifdef WITH_SELINUX Restorecon(fullPath.c_str()); #endif // WITH_SELINUX - return fullPath; -} - -UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterParams &upParams) -{ - UPDATER_INIT_RECORD; - int pfd[DEFAULT_PIPE_NUM]; /* communication between parent and child */ - if (pipe(pfd) < 0) { - LOG(ERROR) << "Create pipe failed: "; - UPDATER_LAST_WORD(UPDATE_ERROR, "Create pipe failed"); - return UPDATE_ERROR; - } - if (pkgManager == nullptr) { - LOG(ERROR) << "pkgManager is nullptr"; - UPDATER_LAST_WORD(UPDATE_CORRUPT); - return UPDATE_CORRUPT; - } - - int pipeRead = pfd[0]; - int pipeWrite = pfd[1]; - std::string fullPath = GetBinaryPath(pkgManager, upParams); pid_t pid = fork(); if (pid < 0) { @@ -525,7 +520,6 @@ UpdaterStatus StartUpdaterProc(PkgManager::PkgManagerPtr pkgManager, UpdaterPara close(pipeWrite); // close write endpoint bool retryUpdate = false; if (HandlePipeMsg(upParams, pipeRead, retryUpdate) != UPDATE_SUCCESS) { - UPDATER_LAST_WORD(UPDATE_ERROR, "HandlePipeMsg failed"); return UPDATE_ERROR; } -- Gitee From 0e4b7ca562cfb14895d9232c7c2684bc80918a26 Mon Sep 17 00:00:00 2001 From: wangjiadong Date: Tue, 26 Nov 2024 15:07:26 +0800 Subject: [PATCH 04/34] Signed-off-by: wangjiadong fix --- services/package/pkg_verify/pkg_verify_util.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index adaf844e..53fe2215 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -125,9 +125,6 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); } - if (ret == PKG_SUCCESS) { - UPDATER_LAST_WORD("hash check success"); - } PKG_LOGI("verify package signature %s", ret == PKG_SUCCESS ? "successfull" : "failed"); return ret; } @@ -228,6 +225,7 @@ int32_t PkgVerifyUtil::HashCheck(const PkgStreamPtr srcData, const size_t dataLe ConvertShaHex(sourceDigest).substr(0, INTERCEPT_HASH_LENGTH), fileInfo); return PKG_INVALID_DIGEST; } + UPDATER_LAST_WORD("hash check success"); return PKG_SUCCESS; } -- Gitee From 98cd9267cc0c25fb4c547ff80cd962b756bf57b1 Mon Sep 17 00:00:00 2001 From: jiangdi Date: Tue, 26 Nov 2024 12:38:22 +0000 Subject: [PATCH 05/34] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=A4=B1=E8=B4=A5=EF=BC=8C=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E8=87=AA=E5=8A=A8=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jiangdi --- services/hwfault_retry/hwfault_retry.cpp | 9 +++++++++ services/include/updater/hwfault_retry.h | 2 ++ test/unittest/updater_test/hwfault_retry_unittest.cpp | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/services/hwfault_retry/hwfault_retry.cpp b/services/hwfault_retry/hwfault_retry.cpp index 433af9c5..ada395b7 100644 --- a/services/hwfault_retry/hwfault_retry.cpp +++ b/services/hwfault_retry/hwfault_retry.cpp @@ -66,8 +66,17 @@ void HwFaultRetry::SetRetryCount(const uint32_t count) retryCount_ = count; } +void HwFaultRetry::SetEffectiveValue(bool value) +{ + effective_ = value; +} + void HwFaultRetry::RebootRetry() { + if (!effective_) { + LOG(WARNING) << "Special scenarios do not take effect, not need retry."; + return; + } if (retryCount_ >= MAX_RETRY_COUNT) { LOG(INFO) << "retry more than 3 times, no need retry"; return; diff --git a/services/include/updater/hwfault_retry.h b/services/include/updater/hwfault_retry.h index 2927b6a5..b0711dda 100644 --- a/services/include/updater/hwfault_retry.h +++ b/services/include/updater/hwfault_retry.h @@ -33,6 +33,7 @@ public: void RegisterFunc(const std::string &faultInfo, RetryFunc func); void SetFaultInfo(const std::string &faultInfo); void SetRetryCount(const uint32_t count); + void SetEffectiveValue(bool value); private: void RebootRetry(); @@ -40,6 +41,7 @@ private: std::unordered_map retryMap_; std::string faultInfo_; uint32_t retryCount_ {}; + bool effective_ = true; }; } // Updater #endif // UPDATER_HWFAULT_RETRY_H diff --git a/test/unittest/updater_test/hwfault_retry_unittest.cpp b/test/unittest/updater_test/hwfault_retry_unittest.cpp index aca888c0..b65e82df 100644 --- a/test/unittest/updater_test/hwfault_retry_unittest.cpp +++ b/test/unittest/updater_test/hwfault_retry_unittest.cpp @@ -76,4 +76,14 @@ HWTEST_F(HwfaultRetryUnitTest, RetryMoreThanMax, TestSize.Level1) bool ret = Utils::CheckFaultInfo(IO_FAILED_REBOOT); EXPECT_EQ(ret, false); } + +HWTEST_F(HwfaultRetryUnitTest, SetEffectiveValueTest, TestSize.Level1) +{ + HwFaultRetry::GetInstance().SetEffectiveValue(false); + HwFaultRetry::GetInstance().SetFaultInfo(VERIFY_FAILED_REBOOT); + HwFaultRetry::GetInstance().SetRetryCount(0); + HwFaultRetry::GetInstance().DoRetryAction(); + + EXPECT_FALSE(Utils::CheckFaultInfo(VERIFY_FAILED_REBOOT)); +} } \ No newline at end of file -- Gitee From ef4c076a1423aae91bb8c3d32e178642f9121374 Mon Sep 17 00:00:00 2001 From: wangjiadong Date: Tue, 26 Nov 2024 20:50:55 +0800 Subject: [PATCH 06/34] Signed-off-by: wangjiadong fix --- services/include/log/dump.h | 11 +++++++++++ services/package/pkg_verify/pkg_verify_util.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/services/include/log/dump.h b/services/include/log/dump.h index cc200e5f..a8431915 100644 --- a/services/include/log/dump.h +++ b/services/include/log/dump.h @@ -29,11 +29,13 @@ #define UPDATER_LAST_WORD Updater::Dump::GetInstance().DumpInfo #define UPDATER_INIT_RECORD DumpStageHelper stageHelper(__FUNCTION__) +#define UPDATER_CLEAR_RECORD Updater::Dump::GetInstance().ClearDump namespace Updater { class DumpHelper { public: virtual void RecordDump(const std::string &str) = 0; + virtual void ClearDump(void) = 0; virtual ~DumpHelper() {} }; @@ -43,6 +45,7 @@ public: { LOG(ERROR) << str; } + void ClearDump(void) override {} ~DumpHelperLog() override {} }; @@ -68,6 +71,14 @@ public: } } } + void ClearDump(void) + { + for (const auto &[key, value] : helpers_) { + if (value != nullptr) { + value->ClearDump(str); + } + } + } private: Dump() {} diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index 53fe2215..2ed92503 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -125,6 +125,7 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); } + UPDATER_CLEAR_RECORD(); PKG_LOGI("verify package signature %s", ret == PKG_SUCCESS ? "successfull" : "failed"); return ret; } @@ -225,7 +226,6 @@ int32_t PkgVerifyUtil::HashCheck(const PkgStreamPtr srcData, const size_t dataLe ConvertShaHex(sourceDigest).substr(0, INTERCEPT_HASH_LENGTH), fileInfo); return PKG_INVALID_DIGEST; } - UPDATER_LAST_WORD("hash check success"); return PKG_SUCCESS; } -- Gitee From 6529b6d79ca3b94f87c29d69ee24c177ab4d23c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Tue, 26 Nov 2024 13:30:22 +0000 Subject: [PATCH 07/34] update services/include/log/dump.h. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/include/log/dump.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/include/log/dump.h b/services/include/log/dump.h index a8431915..3843e0b5 100644 --- a/services/include/log/dump.h +++ b/services/include/log/dump.h @@ -75,7 +75,7 @@ public: { for (const auto &[key, value] : helpers_) { if (value != nullptr) { - value->ClearDump(str); + value->ClearDump(); } } } -- Gitee From 1915469adccbb559a2ab62fd920d2cc523ff6c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Tue, 26 Nov 2024 14:31:48 +0000 Subject: [PATCH 08/34] update services/include/log/dump.h. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/include/log/dump.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/include/log/dump.h b/services/include/log/dump.h index 3843e0b5..67bb2570 100644 --- a/services/include/log/dump.h +++ b/services/include/log/dump.h @@ -29,7 +29,7 @@ #define UPDATER_LAST_WORD Updater::Dump::GetInstance().DumpInfo #define UPDATER_INIT_RECORD DumpStageHelper stageHelper(__FUNCTION__) -#define UPDATER_CLEAR_RECORD Updater::Dump::GetInstance().ClearDump +#define UPDATER_CLEAR_RECORD Updater::Dump::GetInstance().ClearDump() namespace Updater { class DumpHelper { -- Gitee From b11f437323fc831a4d67b5b0427dc1fe122d8186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Tue, 26 Nov 2024 14:32:39 +0000 Subject: [PATCH 09/34] update services/package/pkg_verify/pkg_verify_util.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/package/pkg_verify/pkg_verify_util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index 2ed92503..78fe97c1 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -125,7 +125,7 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); } - UPDATER_CLEAR_RECORD(); + UPDATER_CLEAR_RECORD; PKG_LOGI("verify package signature %s", ret == PKG_SUCCESS ? "successfull" : "failed"); return ret; } -- Gitee From fc28801f9d5ef48bb0e10df1cfee7bfe22e8272b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Wed, 27 Nov 2024 07:03:50 +0000 Subject: [PATCH 10/34] update services/package/pkg_verify/pkg_verify_util.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/package/pkg_verify/pkg_verify_util.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/package/pkg_verify/pkg_verify_util.cpp b/services/package/pkg_verify/pkg_verify_util.cpp index 78fe97c1..596c7bc4 100644 --- a/services/package/pkg_verify/pkg_verify_util.cpp +++ b/services/package/pkg_verify/pkg_verify_util.cpp @@ -125,7 +125,9 @@ int32_t PkgVerifyUtil::VerifyPackageSign(const PkgStreamPtr pkgStream, const std srcDataLen = pkgStream->GetFileLength() - signatureSize - ZIP_EOCD_FIXED_PART_LEN; ret = HashCheck(pkgStream, srcDataLen, hash, path); } - UPDATER_CLEAR_RECORD; + if (ret == PKG_SUCCESS) { + UPDATER_CLEAR_RECORD; + } PKG_LOGI("verify package signature %s", ret == PKG_SUCCESS ? "successfull" : "failed"); return ret; } -- Gitee From 379ca81ff98d3f039dd3cf504d75709f06e93548 Mon Sep 17 00:00:00 2001 From: lizhao Date: Wed, 27 Nov 2024 17:04:36 +0800 Subject: [PATCH 11/34] retry when block update fail Signed-off-by: lizhao --- services/applypatch/transfer_manager.cpp | 10 +++++++++- services/hwfault_retry/hwfault_retry.cpp | 1 + services/include/updater/updater_const.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/services/applypatch/transfer_manager.cpp b/services/applypatch/transfer_manager.cpp index 3810cca3..1f0ad87b 100644 --- a/services/applypatch/transfer_manager.cpp +++ b/services/applypatch/transfer_manager.cpp @@ -42,6 +42,9 @@ bool TransferManager::CommandsExecute(int fd, Command &cmd) return false; } CommandResult ret = cf->Execute(cmd); + if (!params.GetTransferParams()->canWrite) { + return ret == SUCCESS; + } if (!CheckResult(ret, cmd.GetCommandLine(), cmd.GetCommandType())) { return false; } @@ -188,12 +191,17 @@ bool TransferManager::CheckResult(const CommandResult result, const std::string } break; case NEED_RETRY: - LOG(INFO) << "Running command need retry!"; + LOG(INFO) << "IO failed. Running command need retry!"; if (transferParams_->env != nullptr) { transferParams_->env->PostMessage("retry_update", IO_FAILED_REBOOT); } return false; case FAILED: + LOG(INFO) << "Block update failed. Running command need retry!"; + if (transferParams_->env != nullptr) { + transferParams_->env->PostMessage("retry_update", BLOCK_UPDATE_FAILED_REBOOT); + } + return false; default: LOG(ERROR) << "Running command failed"; return false; diff --git a/services/hwfault_retry/hwfault_retry.cpp b/services/hwfault_retry/hwfault_retry.cpp index ada395b7..2b67adbc 100644 --- a/services/hwfault_retry/hwfault_retry.cpp +++ b/services/hwfault_retry/hwfault_retry.cpp @@ -37,6 +37,7 @@ HwFaultRetry::HwFaultRetry() }; RegisterFunc(VERIFY_FAILED_REBOOT, rebootFunc); RegisterFunc(IO_FAILED_REBOOT, rebootFunc); + RegisterFunc(BLOCK_UPDATE_FAILED_REBOOT, rebootFunc); } void HwFaultRetry::RegisterFunc(const std::string &faultInfo, RetryFunc func) diff --git a/services/include/updater/updater_const.h b/services/include/updater/updater_const.h index ad6a29e7..2496e4bc 100644 --- a/services/include/updater/updater_const.h +++ b/services/include/updater/updater_const.h @@ -82,6 +82,7 @@ constexpr const char *MMC_SIZE_FILE = "/data/class/block/mmcblk0/size"; constexpr const char *UPDATER_RETRY_TAG = "retry_update"; constexpr const char *VERIFY_FAILED_REBOOT = "reboot_verify_failed"; constexpr const char *IO_FAILED_REBOOT = "reboot_IO_failed"; +constexpr const char *BLOCK_UPDATE_FAILED_REBOOT = "reboot_block_update_failed"; constexpr int MAX_RETRY_COUNT = 3; constexpr int MINIMAL_ARGC_LIMIT = 2; -- Gitee From 557c553d0cec13364d18229b2d378a05fe3b5540 Mon Sep 17 00:00:00 2001 From: lizhao Date: Wed, 27 Nov 2024 18:43:10 +0800 Subject: [PATCH 12/34] fix Signed-off-by: lizhao --- services/applypatch/transfer_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/applypatch/transfer_manager.cpp b/services/applypatch/transfer_manager.cpp index 1f0ad87b..3b4ed3cc 100644 --- a/services/applypatch/transfer_manager.cpp +++ b/services/applypatch/transfer_manager.cpp @@ -42,7 +42,7 @@ bool TransferManager::CommandsExecute(int fd, Command &cmd) return false; } CommandResult ret = cf->Execute(cmd); - if (!params.GetTransferParams()->canWrite) { + if (!cmd.GetTransferParams()->canWrite) { return ret == SUCCESS; } if (!CheckResult(ret, cmd.GetCommandLine(), cmd.GetCommandType())) { -- Gitee From c22dff8da0983fe167f798523149d9d16aa32fba Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 28 Nov 2024 19:55:56 +0800 Subject: [PATCH 13/34] codex Signed-off-by: unknown --- services/script/script_interpreter/script_interpreter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/script/script_interpreter/script_interpreter.cpp b/services/script/script_interpreter/script_interpreter.cpp index 5eb73309..edb3a2e3 100644 --- a/services/script/script_interpreter/script_interpreter.cpp +++ b/services/script/script_interpreter/script_interpreter.cpp @@ -42,6 +42,8 @@ int32_t ScriptInterpreter::ExecuteScript(ScriptManagerImpl *manager, Hpackage::P } int32_t ret = inter->LoadScript(pkgStream); if (ret != USCRIPT_SUCCESS) { + delete inter; + inter = nullptr; USCRIPT_LOGE("Fail to loadScript script %s", pkgStream->GetFileName().c_str()); UPDATER_LAST_WORD(USCRIPT_ERROR_CREATE_OBJ); return ret; -- Gitee From 6b2147db15ef04490cbb31e43a4a199a6853da36 Mon Sep 17 00:00:00 2001 From: Rayllll Date: Fri, 29 Nov 2024 12:38:15 +0800 Subject: [PATCH 14/34] Signed-off-by: Rayllll extract fail situation --- interfaces/kits/packages/package.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/packages/package.cpp b/interfaces/kits/packages/package.cpp index ea618a6c..c61dd543 100755 --- a/interfaces/kits/packages/package.cpp +++ b/interfaces/kits/packages/package.cpp @@ -301,8 +301,13 @@ int32_t ExtraPackageFile(const char *packagePath, [[maybe_unused]] const char *k PkgManager::ReleasePackageInstance(manager); return PKG_INVALID_STREAM; } - manager->ExtractFile(file, outStream); - + ret = manager->ExtractFile(file, outStream); + if (ret != PKG_SUCCESS) { + LOG(ERROR) << "extract file failed" << file; + manager->ClosePkgStream(outStream); + PkgManager::ReleasePackageInstance(manager); + return PKG_INVALID_FILE; + } manager->ClosePkgStream(outStream); PkgManager::ReleasePackageInstance(manager); return PKG_SUCCESS; -- Gitee From f7f32c515e7dfd4e42cb2f6a44c79c25c10fc4b5 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Mon, 2 Dec 2024 11:57:37 +0000 Subject: [PATCH 15/34] update test/unittest/flashd_test/BUILD.gn. Signed-off-by: zhangcan42 --- test/unittest/flashd_test/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index 49a51a14..9a9922eb 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -111,12 +111,12 @@ ohos_unittest("flashd_unittest") { "//third_party/libuv:uv", "//third_party/lz4:liblz4_static", "//third_party/openssl:libcrypto_shared", - "//third_party/zlib:libz", ] external_deps = [ "hilog:libhilog", "init:libbegetutil_static", + "zlib:libz", ] configs = [ "${updater_path}/test/unittest:utest_config" ] install_enable = true -- Gitee From 639f86a528628b0d875c545d2f117266e371972a Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 3 Dec 2024 01:37:37 +0000 Subject: [PATCH 16/34] add updater_optional_deps Signed-off-by: zhangcan42 --- updater_default_cfg.gni | 1 + 1 file changed, 1 insertion(+) diff --git a/updater_default_cfg.gni b/updater_default_cfg.gni index 2f8f2101..01d8bc1e 100644 --- a/updater_default_cfg.gni +++ b/updater_default_cfg.gni @@ -24,6 +24,7 @@ declare_args() { updater_absolutely_path = "//base/update/updater" hdc_base = "//developtools/hdc" updater_sign_on_server = false + updater_optional_deps = true } if (updater_cfg_file != "") { -- Gitee From a11540bab2f97c93ce4d3648dd1d19d67b84a430 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 3 Dec 2024 01:42:02 +0000 Subject: [PATCH 17/34] add zlib optional deps Signed-off-by: zhangcan42 --- test/unittest/flashd_test/BUILD.gn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index 9a9922eb..f3ce31f2 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -116,8 +116,10 @@ ohos_unittest("flashd_unittest") { external_deps = [ "hilog:libhilog", "init:libbegetutil_static", - "zlib:libz", ] + if (updater_optional_deps) { + external_deps += [ "zlib:libz" ] + } configs = [ "${updater_path}/test/unittest:utest_config" ] install_enable = true part_name = "updater" -- Gitee From 3a094b2cc9f5389fc169ecdd61a0f300cd32bdbe Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 3 Dec 2024 03:36:50 +0000 Subject: [PATCH 18/34] add updater_zlib_enable Signed-off-by: zhangcan42 --- updater_default_cfg.gni | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/updater_default_cfg.gni b/updater_default_cfg.gni index 01d8bc1e..4f84e9f2 100644 --- a/updater_default_cfg.gni +++ b/updater_default_cfg.gni @@ -24,7 +24,12 @@ declare_args() { updater_absolutely_path = "//base/update/updater" hdc_base = "//developtools/hdc" updater_sign_on_server = false - updater_optional_deps = true + updater_zlib_enable = true + + if (defined(global_parts_info) && + !defined(global_parts_info.third_party_zlib)) { + updater_zlib_enable = false + } } if (updater_cfg_file != "") { -- Gitee From f7faad51986a9a04f405b9319a980d0dabf8ff12 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 3 Dec 2024 03:39:03 +0000 Subject: [PATCH 19/34] add zlib optional deps Signed-off-by: zhangcan42 --- test/unittest/flashd_test/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index f3ce31f2..ee867d2a 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -117,7 +117,7 @@ ohos_unittest("flashd_unittest") { "hilog:libhilog", "init:libbegetutil_static", ] - if (updater_optional_deps) { + if (updater_zlib_enable) { external_deps += [ "zlib:libz" ] } configs = [ "${updater_path}/test/unittest:utest_config" ] -- Gitee From 253a3cb1a0f2b684bedd1d940c91f7d9eb430784 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 9 Dec 2024 14:45:09 +0800 Subject: [PATCH 20/34] add usb path judge Signed-off-by: unknown --- services/ptable_parse/ufs_ptable.cpp | 15 ++++++++++++++- services/ptable_parse/ufs_ptable.h | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/services/ptable_parse/ufs_ptable.cpp b/services/ptable_parse/ufs_ptable.cpp index cfda373b..ea6a59e6 100644 --- a/services/ptable_parse/ufs_ptable.cpp +++ b/services/ptable_parse/ufs_ptable.cpp @@ -45,6 +45,19 @@ uint32_t UfsPtable::GetPtableExtraOffset(void) } // avoid u disk being recognized as a valid gpt lun device +bool UfsPtable::IsUsbPath(const char* filePath) +{ + const char* targetUsbString = "usb"; + const char* targetXhciString = "xhci"; + char linkBuf[READ_LINK_BUFFER_LENTH] = {0}; + sszie_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); + LOG(INFO) << "readlibk " << filePath << " retSzie " << retSize << ", linkBuf is: " << linkBuf; + if (retSize > 0 && (strstr(linkBuf, targetUsbString) != nullptr || strstr(linkBuf,targetXhciString) != nullptr)) { + return true; + } + return false; +} + bool UfsPtable::CheckDeviceLunRemoveable(const uint32_t lunIndex) { constexpr uint32_t minRemoveableStartIdx = 3; @@ -88,7 +101,7 @@ void UfsPtable::SetDeviceLunNum() break; } #ifndef UPDATER_UT - if (CheckDeviceLunRemoveable(lunIndex)) { + if (CheckDeviceLunRemoveable(lunIndex) || IsUsbPath(ufsNode.c_str())) { LOG(ERROR) << "device " << ufsNode << " is removable, may be a u disk"; break; } diff --git a/services/ptable_parse/ufs_ptable.h b/services/ptable_parse/ufs_ptable.h index b0180f91..99e5f4b1 100644 --- a/services/ptable_parse/ufs_ptable.h +++ b/services/ptable_parse/ufs_ptable.h @@ -41,6 +41,7 @@ public: static constexpr uint32_t MAX_LUN_NUMBERS = 26; static constexpr uint32_t MIN_UFS_WRITE_SIZE = 4096; static constexpr uint32_t GPT_PTABLE_BACKUP_SIZE = 33; // back ptable at the end of lun + static constexpr uint32_t READ_LINK_BUFFER_LENTH = 1024; struct UfsPartitionDataInfo { bool isGptVaild; @@ -77,6 +78,7 @@ public: uint8_t *GetPtableImageUfsLunPmbrStart(uint8_t *imageBuf, const uint32_t lunIndex); uint8_t *GetPtableImageUfsLunGptHeaderStart(uint8_t *imageBuf, const uint32_t lunIndex); uint8_t *GetPtableImageUfsLunEntryStart(uint8_t *imageBuf, const uint32_t lunIndex); + bool IsUsbPath(const char* filePath); }; } // namespace Updater #endif // UPDATER_UFS_PTABLE_H \ No newline at end of file -- Gitee From 006e200dc997f139b9009550fe84dcc819a8d15b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 9 Dec 2024 15:23:52 +0800 Subject: [PATCH 21/34] fix Signed-off-by: unknown --- services/ptable_parse/ufs_ptable.cpp | 2 +- services/ptable_parse/ufs_ptable.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/ptable_parse/ufs_ptable.cpp b/services/ptable_parse/ufs_ptable.cpp index ea6a59e6..93ee0c32 100644 --- a/services/ptable_parse/ufs_ptable.cpp +++ b/services/ptable_parse/ufs_ptable.cpp @@ -50,7 +50,7 @@ bool UfsPtable::IsUsbPath(const char* filePath) const char* targetUsbString = "usb"; const char* targetXhciString = "xhci"; char linkBuf[READ_LINK_BUFFER_LENTH] = {0}; - sszie_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); + ssize_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); LOG(INFO) << "readlibk " << filePath << " retSzie " << retSize << ", linkBuf is: " << linkBuf; if (retSize > 0 && (strstr(linkBuf, targetUsbString) != nullptr || strstr(linkBuf,targetXhciString) != nullptr)) { return true; diff --git a/services/ptable_parse/ufs_ptable.h b/services/ptable_parse/ufs_ptable.h index 99e5f4b1..96ae8fe7 100644 --- a/services/ptable_parse/ufs_ptable.h +++ b/services/ptable_parse/ufs_ptable.h @@ -41,7 +41,7 @@ public: static constexpr uint32_t MAX_LUN_NUMBERS = 26; static constexpr uint32_t MIN_UFS_WRITE_SIZE = 4096; static constexpr uint32_t GPT_PTABLE_BACKUP_SIZE = 33; // back ptable at the end of lun - static constexpr uint32_t READ_LINK_BUFFER_LENTH = 1024; + static constexpr uint32_t READ_LINK_BUFFER_LENTH = 1024; // readlink buffer size struct UfsPartitionDataInfo { bool isGptVaild; -- Gitee From 057e30d19059fe68160075411cae04263b2b42d4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 9 Dec 2024 15:23:52 +0800 Subject: [PATCH 22/34] fix Signed-off-by: unknown --- services/ptable_parse/ufs_ptable.cpp | 4 ++-- services/ptable_parse/ufs_ptable.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/ptable_parse/ufs_ptable.cpp b/services/ptable_parse/ufs_ptable.cpp index ea6a59e6..b4cee23a 100644 --- a/services/ptable_parse/ufs_ptable.cpp +++ b/services/ptable_parse/ufs_ptable.cpp @@ -50,9 +50,9 @@ bool UfsPtable::IsUsbPath(const char* filePath) const char* targetUsbString = "usb"; const char* targetXhciString = "xhci"; char linkBuf[READ_LINK_BUFFER_LENTH] = {0}; - sszie_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); + ssize_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); LOG(INFO) << "readlibk " << filePath << " retSzie " << retSize << ", linkBuf is: " << linkBuf; - if (retSize > 0 && (strstr(linkBuf, targetUsbString) != nullptr || strstr(linkBuf,targetXhciString) != nullptr)) { + if (retSize > 0 && (strstr(linkBuf, targetUsbString) != nullptr || strstr(linkBuf, targetXhciString) != nullptr)) { return true; } return false; diff --git a/services/ptable_parse/ufs_ptable.h b/services/ptable_parse/ufs_ptable.h index 99e5f4b1..96ae8fe7 100644 --- a/services/ptable_parse/ufs_ptable.h +++ b/services/ptable_parse/ufs_ptable.h @@ -41,7 +41,7 @@ public: static constexpr uint32_t MAX_LUN_NUMBERS = 26; static constexpr uint32_t MIN_UFS_WRITE_SIZE = 4096; static constexpr uint32_t GPT_PTABLE_BACKUP_SIZE = 33; // back ptable at the end of lun - static constexpr uint32_t READ_LINK_BUFFER_LENTH = 1024; + static constexpr uint32_t READ_LINK_BUFFER_LENTH = 1024; // readlink buffer size struct UfsPartitionDataInfo { bool isGptVaild; -- Gitee From fecef00c535717518a32a8ae0f2c1cb8244e012e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Dec 2024 10:38:01 +0800 Subject: [PATCH 23/34] fix ut Signed-off-by: unknown --- test/unittest/package/pkg_verify_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/package/pkg_verify_unittest.cpp b/test/unittest/package/pkg_verify_unittest.cpp index 643b6e4b..7ed92ef8 100644 --- a/test/unittest/package/pkg_verify_unittest.cpp +++ b/test/unittest/package/pkg_verify_unittest.cpp @@ -66,7 +66,7 @@ public: keyPath = "/data/updater/src/signing_cert.crt"; file = "updater.bin"; ret = ExtraPackageFile(packagePath.c_str(), keyPath.c_str(), file.c_str(), testPackagePath.c_str()); - EXPECT_EQ(ret, PKG_SUCCESS); + EXPECT_EQ(ret, PKG_INVALID_FILE); return 0; } -- Gitee From 7ab1f856f0f8888b0c9ef41fc7b16e2a6adbaa78 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Dec 2024 10:38:01 +0800 Subject: [PATCH 24/34] fix ut Signed-off-by: unknown --- test/unittest/package/pkg_verify_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/package/pkg_verify_unittest.cpp b/test/unittest/package/pkg_verify_unittest.cpp index 643b6e4b..20042104 100644 --- a/test/unittest/package/pkg_verify_unittest.cpp +++ b/test/unittest/package/pkg_verify_unittest.cpp @@ -64,7 +64,7 @@ public: packagePath = testPackagePath + "test_package.zip"; keyPath = "/data/updater/src/signing_cert.crt"; - file = "updater.bin"; + file = "update.bin"; ret = ExtraPackageFile(packagePath.c_str(), keyPath.c_str(), file.c_str(), testPackagePath.c_str()); EXPECT_EQ(ret, PKG_SUCCESS); return 0; -- Gitee From 14ff2e7adbbf1645546a2d8b583a4d6d9ffe70fd Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Dec 2024 15:59:35 +0800 Subject: [PATCH 25/34] fix Signed-off-by: unknown --- test/unittest/package/pkg_verify_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/package/pkg_verify_unittest.cpp b/test/unittest/package/pkg_verify_unittest.cpp index 94b8b7fa..20042104 100644 --- a/test/unittest/package/pkg_verify_unittest.cpp +++ b/test/unittest/package/pkg_verify_unittest.cpp @@ -66,7 +66,7 @@ public: keyPath = "/data/updater/src/signing_cert.crt"; file = "update.bin"; ret = ExtraPackageFile(packagePath.c_str(), keyPath.c_str(), file.c_str(), testPackagePath.c_str()); - EXPECT_EQ(ret, PKG_INVALID_FILE); + EXPECT_EQ(ret, PKG_SUCCESS); return 0; } -- Gitee From d2a794c319973f9138cd979603ac2310c4a52315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Wed, 11 Dec 2024 06:06:54 +0000 Subject: [PATCH 26/34] update services/package/pkg_verify/openssl_util.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/package/pkg_verify/openssl_util.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/package/pkg_verify/openssl_util.cpp b/services/package/pkg_verify/openssl_util.cpp index e73d4f1c..9f3d6bd7 100644 --- a/services/package/pkg_verify/openssl_util.cpp +++ b/services/package/pkg_verify/openssl_util.cpp @@ -218,11 +218,11 @@ int32_t CalcSha256Digest(const PkgStreamPtr srcData, const size_t dataLen, std:: UPDATER_LAST_WORD(-1); return -1; } - SHA256_Update(&ctx, buffer.buffer, blockLen); + SHA256_Update(&ctx, buffer.buffer, readLen); offset += readLen; remainLen -= readLen; } - if (remainLen > 0) { + while (remainLen > 0) { ret = srcData->Read(buffer, offset, remainLen, readLen); if (ret != 0) { PKG_LOGE("Fail read data"); @@ -230,6 +230,9 @@ int32_t CalcSha256Digest(const PkgStreamPtr srcData, const size_t dataLen, std:: return -1; } SHA256_Update(&ctx, buffer.buffer, readLen); + offset += readLen; + PKG_LOGE("use new remainLen"); + remainLen -= readLen; } if (SHA256_Final(result.data(), &ctx) != 1) { -- Gitee From 62e60b35d030d2380fc9fe498848bac3d6d67df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BD=B3=E6=A0=8B?= Date: Wed, 11 Dec 2024 06:09:21 +0000 Subject: [PATCH 27/34] update services/package/pkg_verify/openssl_util.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王佳栋 --- services/package/pkg_verify/openssl_util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/package/pkg_verify/openssl_util.cpp b/services/package/pkg_verify/openssl_util.cpp index 9f3d6bd7..a2ed3711 100644 --- a/services/package/pkg_verify/openssl_util.cpp +++ b/services/package/pkg_verify/openssl_util.cpp @@ -231,7 +231,7 @@ int32_t CalcSha256Digest(const PkgStreamPtr srcData, const size_t dataLen, std:: } SHA256_Update(&ctx, buffer.buffer, readLen); offset += readLen; - PKG_LOGE("use new remainLen"); + PKG_LOGI("use new remainLen"); remainLen -= readLen; } -- Gitee From 35aa5c305381e4d637dd80204995501bc5f9bb51 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2024 15:00:43 +0800 Subject: [PATCH 28/34] fix readlink path Signed-off-by: unknown --- services/ptable_parse/ufs_ptable.cpp | 10 ++++++---- services/ptable_parse/ufs_ptable.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/services/ptable_parse/ufs_ptable.cpp b/services/ptable_parse/ufs_ptable.cpp index b4cee23a..0c6e7e01 100644 --- a/services/ptable_parse/ufs_ptable.cpp +++ b/services/ptable_parse/ufs_ptable.cpp @@ -45,13 +45,15 @@ uint32_t UfsPtable::GetPtableExtraOffset(void) } // avoid u disk being recognized as a valid gpt lun device -bool UfsPtable::IsUsbPath(const char* filePath) +bool UfsPtable::IsUsbPath(const uint32_t lunIndex) { + char lunIndexName = 'a' + lunIndex; const char* targetUsbString = "usb"; const char* targetXhciString = "xhci"; char linkBuf[READ_LINK_BUFFER_LENTH] = {0}; - ssize_t retSize = readlink(filePath, linkBuf, READ_LINK_BUFFER_LENTH - 1); - LOG(INFO) << "readlibk " << filePath << " retSzie " << retSize << ", linkBuf is: " << linkBuf; + std::string filePath = std::string(PREFIX_SYS_CLASS_BLOCK) + lunIndexName; + ssize_t retSize = readlink(filePath.c_str(), linkBuf, READ_LINK_BUFFER_LENTH - 1); + LOG(INFO) << "readlink " << filePath << " retSzie " << retSize << ", linkBuf is: " << linkBuf; if (retSize > 0 && (strstr(linkBuf, targetUsbString) != nullptr || strstr(linkBuf, targetXhciString) != nullptr)) { return true; } @@ -101,7 +103,7 @@ void UfsPtable::SetDeviceLunNum() break; } #ifndef UPDATER_UT - if (CheckDeviceLunRemoveable(lunIndex) || IsUsbPath(ufsNode.c_str())) { + if (CheckDeviceLunRemoveable(lunIndex) || IsUsbPath(lunIndex)) { LOG(ERROR) << "device " << ufsNode << " is removable, may be a u disk"; break; } diff --git a/services/ptable_parse/ufs_ptable.h b/services/ptable_parse/ufs_ptable.h index 96ae8fe7..f6ee7809 100644 --- a/services/ptable_parse/ufs_ptable.h +++ b/services/ptable_parse/ufs_ptable.h @@ -78,7 +78,7 @@ public: uint8_t *GetPtableImageUfsLunPmbrStart(uint8_t *imageBuf, const uint32_t lunIndex); uint8_t *GetPtableImageUfsLunGptHeaderStart(uint8_t *imageBuf, const uint32_t lunIndex); uint8_t *GetPtableImageUfsLunEntryStart(uint8_t *imageBuf, const uint32_t lunIndex); - bool IsUsbPath(const char* filePath); + bool IsUsbPath(const uint32_t lunIndex); }; } // namespace Updater #endif // UPDATER_UFS_PTABLE_H \ No newline at end of file -- Gitee From 0e8a90d028bb4649ca22046917964ae5e75b434a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=87=AF?= Date: Wed, 11 Dec 2024 07:50:29 +0000 Subject: [PATCH 29/34] update services/updater_main.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈凯 --- services/updater_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/services/updater_main.cpp b/services/updater_main.cpp index 8abf00a4..15246514 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -707,6 +707,7 @@ std::unordered_map> InitOptionsFuncTab(char* {"sdcard_update", [&]() -> void { upParams.updateMode = SDCARD_UPDATE; + upParams.sdExtMode = SDCARD_NORMAL_UPDATE; }}, {"UPDATE:MAINIMG", [&]() -> void { -- Gitee From 9f6cb0d6514d81cc247284ac2f812069c5c08f3f Mon Sep 17 00:00:00 2001 From: richard Date: Wed, 11 Dec 2024 08:30:00 +0000 Subject: [PATCH 30/34] bug fix Signed-off-by: richard --- test/unittest/flashd_test/BUILD.gn | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index ee867d2a..66d5a1dd 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -83,11 +83,6 @@ ohos_unittest("flashd_unittest") { "${updater_path}/services/ptable_parse", "${updater_path}/utils/include", "${updater_path}/utils/json", - "//base/startup/init/services/include/param", - "//third_party/bounds_checking_function/include", - "//third_party/cJSON", - "//third_party/lz4/lib", - "//third_party/libuv", ] deps = [ @@ -103,20 +98,20 @@ ohos_unittest("flashd_unittest") { "${updater_path}/services/package:libupdaterpackage", "${updater_path}/services/script:libupdaterscript", "${updater_path}/utils:libutils", - "//third_party/bounds_checking_function:libsec_static", - "//third_party/bzip2:libbz2", - "//third_party/cJSON:cjson", - "//third_party/googletest:gmock_main", - "//third_party/googletest:gtest_main", - "//third_party/libuv:uv", - "//third_party/lz4:liblz4_static", - "//third_party/openssl:libcrypto_shared", ] external_deps = [ "hilog:libhilog", "init:libbegetutil_static", - ] + "bounds_checking_function:libsec_static", + "bzip2:libbz2", + "cJSON:cjson", + "googletest:gmock_main", + "googletest:gtest_main", + "libuv:uv", + "lz4:liblz4_static", + "openssl:libcrypto_shared", +] if (updater_zlib_enable) { external_deps += [ "zlib:libz" ] } @@ -141,7 +136,6 @@ ohos_unittest("flashd_utils_unittest") { "${updater_path}/services/include", "${updater_path}/utils/include", "${updater_path}/services/flashd", - "//third_party/libuv", "${updater_path}/interfaces/kits/include", "${updater_path}/services/common", "${updater_path}/services/flashd/common", @@ -151,8 +145,8 @@ ohos_unittest("flashd_utils_unittest") { "c_utils:utils", "hilog:libhilog", "init:libbegetutil_static", + "libuv:uv", ] - deps = [ "//third_party/libuv:uv" ] configs = [ "${updater_path}/test/unittest:utest_config" ] install_enable = true part_name = "updater" -- Gitee From 489b883b354353662ebb19c40c0f3816240d7ca3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2024 16:46:46 +0800 Subject: [PATCH 31/34] add mount.exfat Signed-off-by: unknown --- services/fs_manager/mount.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/services/fs_manager/mount.cpp b/services/fs_manager/mount.cpp index 0252db64..f1897f0f 100644 --- a/services/fs_manager/mount.cpp +++ b/services/fs_manager/mount.cpp @@ -122,11 +122,8 @@ int UmountForPath(const std::string& path) } return 0; } - -static int MountNtfsWithRetry(std::string source, std::string target) +static int LoopToMount(char *argv[], std::string source, std::string target) { - char *argv[] = {const_cast("system/bin/mount.ntfs"), - const_cast(source.c_str()), const_cast(target.c_str()), nullptr}; int num = 0; do { pid_t child = fork(); @@ -163,6 +160,20 @@ static int MountNtfsWithRetry(std::string source, std::string target) return -1; } +static int MountNtfsWithRetry(std::string source, std::string target) +{ + char *argv[] = {const_cast("system/bin/mount.ntfs"), + const_cast(source.c_str()), const_cast(target.c_str()), nullptr}; + return LoopToMount(argv, source, target); +} + +static int MountExfatWithRetry(std::string source, std::string target) +{ + char *argv[] = {const_cast("system/bin/mount.exfat"), + const_cast(source.c_str()), const_cast(target.c_str()), nullptr}; + return LoopToMount(argv, source, target); +} + int MountSdcard(std::string &path, std::string &mountPoint) { if (path.empty() || mountPoint.empty()) { @@ -187,6 +198,10 @@ int MountSdcard(std::string &path, std::string &mountPoint) LOG(INFO) << "mount success, sdcard type is ntfs"; return 0; } + if (MountExfatWithRetry(path, mountPoint) == 0) { + LOG(INFO) << "mount success, sdcard type is exfat"; + return 0; + } return -1; } -- Gitee From 4dc352ee4579500cc4888fe3758227ed9a13acf3 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 12 Dec 2024 07:38:16 +0000 Subject: [PATCH 32/34] add Signed-off-by: richard --- test/unittest/flashd_test/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index 66d5a1dd..8c2cb812 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -147,6 +147,7 @@ ohos_unittest("flashd_utils_unittest") { "init:libbegetutil_static", "libuv:uv", ] + deps = [] configs = [ "${updater_path}/test/unittest:utest_config" ] install_enable = true part_name = "updater" -- Gitee From 44c1fd1394aa5039087e558034dc5d832b515132 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 12 Dec 2024 10:04:35 +0000 Subject: [PATCH 33/34] add Signed-off-by: richard --- test/unittest/flashd_test/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index 8c2cb812..114861aa 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -111,7 +111,7 @@ ohos_unittest("flashd_unittest") { "libuv:uv", "lz4:liblz4_static", "openssl:libcrypto_shared", -] + ] if (updater_zlib_enable) { external_deps += [ "zlib:libz" ] } -- Gitee From 4e65e61b06473b31a311e7727e62486e909bf484 Mon Sep 17 00:00:00 2001 From: richard Date: Fri, 13 Dec 2024 03:41:16 +0000 Subject: [PATCH 34/34] add Signed-off-by: richard --- test/unittest/flashd_test/BUILD.gn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unittest/flashd_test/BUILD.gn b/test/unittest/flashd_test/BUILD.gn index 114861aa..6fb16a94 100644 --- a/test/unittest/flashd_test/BUILD.gn +++ b/test/unittest/flashd_test/BUILD.gn @@ -101,13 +101,13 @@ ohos_unittest("flashd_unittest") { ] external_deps = [ - "hilog:libhilog", - "init:libbegetutil_static", "bounds_checking_function:libsec_static", "bzip2:libbz2", "cJSON:cjson", "googletest:gmock_main", "googletest:gtest_main", + "hilog:libhilog", + "init:libbegetutil_static", "libuv:uv", "lz4:liblz4_static", "openssl:libcrypto_shared", -- Gitee