From a50522c954316b6f902851d1b8ae5cda32410802 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Thu, 21 Aug 2025 02:16:56 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BB=E5=8F=96=20zip?= =?UTF-8?q?=20file=20entry=20=E5=AE=9A=E4=BD=8D=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../codesigning/sign/include/code_signing.h | 2 +- .../codesigning/sign/src/code_signing.cpp | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/hapsigntool_cpp/codesigning/sign/include/code_signing.h b/hapsigntool_cpp/codesigning/sign/include/code_signing.h index 7bf8f771..a9aece49 100644 --- a/hapsigntool_cpp/codesigning/sign/include/code_signing.h +++ b/hapsigntool_cpp/codesigning/sign/include/code_signing.h @@ -66,7 +66,7 @@ public: bool GetSingleFileStreamFromZip(unzFile& zFile, char fileName[], unz_file_info& zFileInfo, int& readFileSize, std::stringbuf& sb); - bool RunParseZipInfo(const std::string& packageName, UnzipHandleParam& param, uLong index); + bool RunParseZipInfo(const std::string& packageName, UnzipHandleParam& param, unz_file_pos pos); bool GenerateSignature(const std::vector& signedData, const std::string&, std::vector&); int64_t m_timestamp = 0; diff --git a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp index fb9afde8..92e8041b 100644 --- a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp +++ b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp @@ -313,20 +313,17 @@ bool CodeSigning::GetSingleFileStreamFromZip(unzFile &zFile, char fileName[], return true; } -bool CodeSigning::RunParseZipInfo(const std::string& packageName, UnzipHandleParam& param, uLong index) +bool CodeSigning::RunParseZipInfo(const std::string& packageName, UnzipHandleParam& param, unz_file_pos pos) { unzFile zFile = unzOpen(packageName.c_str()); if (zFile == NULL) { PrintErrorNumberMsg("IO_ERROR", IO_ERROR, "zlib open file: " + packageName + " failed."); return false; } - for (uLong i = 0; i < index; ++i) { - int ret = unzGoToNextFile(zFile); - if (ret != UNZ_OK) { - PrintErrorNumberMsg("SIGN_ERROR", SIGN_ERROR, "zlib go to next file failed."); - unzClose(zFile); - return false; - } + if (unzGotoFilePos(zFile, &pos) != UNZ_OK) { + PrintErrorNumberMsg("SIGN_ERROR", SIGN_ERROR, "zlib go to file failed."); + unzClose(zFile); + return false; } unz_file_info zFileInfo; char fileName[FILE_NAME_SIZE]; @@ -377,8 +374,10 @@ bool CodeSigning::HandleZipGlobalInfo(const std::string& packageName, unzFile& z return false; } if (CheckFileName(fileName, &nameLen)) { + unz_file_pos pos; + unzGetFilePos(zFile, &pos); thread_results.push_back(mPools->Enqueue(&CodeSigning::RunParseZipInfo, this, - std::ref(packageName), std::ref(param), i)); + std::ref(packageName), std::ref(param), pos)); } if (i != zGlobalInfo.number_entry - 1) { int ret = unzGoToNextFile(zFile); -- Gitee From db3d33f4fd3a05aff115bc469dccb73032bb7c69 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Thu, 21 Aug 2025 02:23:18 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BB=E5=8F=96=20zip?= =?UTF-8?q?=20file=20entry=20=E5=AE=9A=E4=BD=8D=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- hapsigntool_cpp/codesigning/sign/src/code_signing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp index 92e8041b..4d19ee4c 100644 --- a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp +++ b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp @@ -320,7 +320,7 @@ bool CodeSigning::RunParseZipInfo(const std::string& packageName, UnzipHandlePar PrintErrorNumberMsg("IO_ERROR", IO_ERROR, "zlib open file: " + packageName + " failed."); return false; } - if (unzGotoFilePos(zFile, &pos) != UNZ_OK) { + if (unzGoToFilePos(zFile, &pos) != UNZ_OK) { PrintErrorNumberMsg("SIGN_ERROR", SIGN_ERROR, "zlib go to file failed."); unzClose(zFile); return false; -- Gitee From 774fb6c193069face8c71f25dafd3a85142d3ba3 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Thu, 21 Aug 2025 09:32:47 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BB=E5=8F=96=20zip?= =?UTF-8?q?=20file=20entry=20=E5=AE=9A=E4=BD=8D=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- hapsigntool_cpp/codesigning/sign/src/code_signing.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp index 4d19ee4c..f3ca4ff7 100644 --- a/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp +++ b/hapsigntool_cpp/codesigning/sign/src/code_signing.cpp @@ -375,7 +375,10 @@ bool CodeSigning::HandleZipGlobalInfo(const std::string& packageName, unzFile& z } if (CheckFileName(fileName, &nameLen)) { unz_file_pos pos; - unzGetFilePos(zFile, &pos); + if (unzGetFilePos(zFile, &pos) != UNZ_OK) { + SIGNATURE_TOOLS_LOGE("unzGetFilePos failed, fileName = %s", fileName); + return false; + } thread_results.push_back(mPools->Enqueue(&CodeSigning::RunParseZipInfo, this, std::ref(packageName), std::ref(param), pos)); } -- Gitee