fix(Zip): Zip 64-bit extensions not set #2590 (tentative) (#3604)

This commit is contained in:
Aleksandar Fabijanic 2022-06-13 14:48:34 -05:00 committed by GitHub
parent 2bd71b4ea4
commit 08fe7fd200
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 5 deletions

View File

@ -22,7 +22,6 @@
#include "Poco/Zip/ZipCommon.h"
#include "Poco/Zip/ZipUtil.h"
namespace Poco {
namespace Zip {

View File

@ -83,6 +83,12 @@ void Compress::addEntry(std::istream& in, const Poco::DateTime& lastModifiedAt,
std::streamoff localHeaderOffset = _offset;
ZipLocalFileHeader hdr(fileName, lastModifiedAt, cm, cl, _forceZip64);
std::streampos pos = in.tellg();
in.seekg(0, in.end);
std::streampos length = in.tellg();
in.seekg(pos);
if (length >= ZipCommon::ZIP64_MAGIC)
hdr.setZip64Data();
hdr.setStartPos(localHeaderOffset);
ZipOutputStream zipOut(_out, hdr, _seekableOut);

View File

@ -243,7 +243,8 @@ void ZipLocalFileHeader::init(const Poco::Path& fName, ZipCommon::CompressionMet
}
else
setCompressionMethod(ZipCommon::CM_STORE);
if (_forceZip64)
if (needsZip64())
setZip64Data();
_rawHeader[GENERAL_PURPOSE_POS+1] |= 0x08; // Set "language encoding flag" to indicate that filenames and paths are in UTF-8.