diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2007-12-06 03:00:00 +0300 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:15:55 +0300 |
commit | bd1fa36322ac27f5715433b388742893d6524516 (patch) | |
tree | a4efc312bd09de6bcfe4aec47d248f5c0bc87354 /CPP/7zip/Archive/Zip/ZipIn.cpp | |
parent | acd742622d1e0daf50ae815bec4ddb2143bafbf5 (diff) |
4.574.57
Diffstat (limited to 'CPP/7zip/Archive/Zip/ZipIn.cpp')
-rwxr-xr-x | CPP/7zip/Archive/Zip/ZipIn.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/CPP/7zip/Archive/Zip/ZipIn.cpp b/CPP/7zip/Archive/Zip/ZipIn.cpp index bf3764f7..b579f9b4 100755 --- a/CPP/7zip/Archive/Zip/ZipIn.cpp +++ b/CPP/7zip/Archive/Zip/ZipIn.cpp @@ -437,8 +437,21 @@ HRESULT CInArchive::ReadLocalItemAfterCdItemFull(CItemEx &item) if (ReadUInt32() != NSignature::kDataDescriptor) return S_FALSE; UInt32 crc = ReadUInt32(); - UInt32 packSize = ReadUInt32(); - UInt32 unpackSize = ReadUInt32(); + UInt64 packSize, unpackSize; + + /* + if (IsZip64) + { + packSize = ReadUInt64(); + unpackSize = ReadUInt64(); + } + else + */ + { + packSize = ReadUInt32(); + unpackSize = ReadUInt32(); + } + if (crc != item.FileCRC || item.PackSize != packSize || item.UnPackSize != unpackSize) return S_FALSE; } @@ -681,6 +694,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *pr // kEndOfCentralDirSignature // m_Position points to next byte after signature + IsZip64 = false; items.Clear(); if (progress != 0) { @@ -722,7 +736,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *pr UInt64 zip64EcdStartOffset = m_Position - 4 - m_ArchiveInfo.Base; if(m_Signature == NSignature::kZip64EndOfCentralDir) { - isZip64 = true; + IsZip64 = isZip64 = true; UInt64 recordSize = ReadUInt64(); /* UInt16 versionMade = */ ReadUInt16(); /* UInt16 versionNeedExtract = */ ReadUInt16(); |