From 566c49ce53dea080068df95f427b3df2d24d4880 Mon Sep 17 00:00:00 2001 From: Lars Vahlenberg Date: Sun, 14 Feb 2021 02:42:32 +0100 Subject: [PATCH] Proposal Zip64 requires version 4.5 Number of disks is 4 bytes and not 8 --- src/SharpCompress/Writers/Zip/ZipWriter.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index 8bf0faba6..010473159 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -253,7 +253,7 @@ private void WriteEndRecord(ulong size) BinaryPrimitives.WriteUInt64LittleEndian(intBuf, (ulong)recordlen); OutputStream.Write(intBuf); // Size of zip64 end of central directory record - BinaryPrimitives.WriteUInt16LittleEndian(intBuf, 0); + BinaryPrimitives.WriteUInt16LittleEndian(intBuf, 45); OutputStream.Write(intBuf.Slice(0, 2)); // Made by BinaryPrimitives.WriteUInt16LittleEndian(intBuf, 45); OutputStream.Write(intBuf.Slice(0, 2)); // Version needed @@ -278,8 +278,8 @@ private void WriteEndRecord(ulong size) OutputStream.Write(intBuf.Slice(0, 4)); // Entry disk BinaryPrimitives.WriteUInt64LittleEndian(intBuf, (ulong)streamPosition + size); OutputStream.Write(intBuf); // Offset to the zip64 central directory - BinaryPrimitives.WriteUInt32LittleEndian(intBuf, 0); - OutputStream.Write(intBuf); // Number of disks + BinaryPrimitives.WriteUInt32LittleEndian(intBuf, 1); + OutputStream.Write(intBuf.Slice(0, 4)); // Number of disks streamPosition += recordlen + (4 + 4 + 8 + 4); streampositionvalue = streamPosition >= uint.MaxValue ? uint.MaxValue : (uint)streampositionvalue;