@@ -123,7 +123,7 @@ core::smart_refctd_ptr<IFileArchive> CArchiveLoaderZip::createArchive_impl(core:
123123 item.pathRelativeToArchive = _path;
124124 item.size = meta.DataDescriptor .UncompressedSize ;
125125 item.offset = offset;
126- item.ID = items .size ();
126+ item.ID = itemsMetadata .size ();
127127 item.allocatorType = meta.CompressionMethod ? IFileArchive::EAT_VIRTUAL_ALLOC:IFileArchive::EAT_NULL;
128128 itemsMetadata.push_back (meta);
129129 };
@@ -232,7 +232,7 @@ core::smart_refctd_ptr<IFileArchive> CArchiveLoaderZip::createArchive_impl(core:
232232 SZIPFileHeader zipHeader;
233233 {
234234 IFile::success_t success;
235- file->read (success,&zipHeader,0ull ,sizeof (zipHeader));
235+ file->read (success,&zipHeader,offset ,sizeof (zipHeader));
236236 if (!success)
237237 break ;
238238 offset += success.getSizeToProcess ();
@@ -393,7 +393,7 @@ CFileArchive::file_buffer_t CArchiveLoaderZip::CArchive::getFileBuffer(const IFi
393393 CFileArchive::file_buffer_t retval = { nullptr ,item->size ,nullptr };
394394 //
395395 void * decrypted = nullptr ;
396- size_t decryptedSize = 0ull ;
396+ size_t decryptedSize = header. DataDescriptor . CompressedSize ;
397397 auto freeOnFail = core::makeRAIIExiter ([&actualCompressionMethod,&retval,&decrypted,&decryptedSize](){
398398 if (decrypted && retval.buffer !=decrypted)
399399 {
@@ -424,7 +424,7 @@ CFileArchive::file_buffer_t CArchiveLoaderZip::CArchive::getFileBuffer(const IFi
424424 const size_t reduction = saltSize+12u ;
425425 if (header.DataDescriptor .CompressedSize <=reduction)
426426 return retval;
427- decryptedSize = header. DataDescriptor . CompressedSize - reduction;
427+ decryptedSize -= reduction;
428428 }
429429 mmapPtr += saltSize;
430430 uint16_t & pwVerification = *reinterpret_cast <uint16_t *>(mmapPtr);
0 commit comments