From d4fb17cf66d1ee3e527005375651a0f98868f410 Mon Sep 17 00:00:00 2001 From: Daniel Nash Date: Fri, 22 Dec 2023 11:12:46 -0500 Subject: [PATCH] ZipWriter: Write correct EOCD record when more than 65,535 files 0xFFFF will be written to the EOCD to signal to use the ZIP64 CentralDirectory record when the number of files is 65,535 or more. Fixes #791 --- src/SharpCompress/Writers/Zip/ZipWriter.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index e1fd222c..e1bb53e9 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -304,7 +304,10 @@ private void WriteEndRecord(ulong size) // Write normal end of central directory record OutputStream.Write(stackalloc byte[] { 80, 75, 5, 6, 0, 0, 0, 0 }); - BinaryPrimitives.WriteUInt16LittleEndian(intBuf, (ushort)entries.Count); + BinaryPrimitives.WriteUInt16LittleEndian( + intBuf, + (ushort)(entries.Count < 0xFFFF ? entries.Count : 0xFFFF) + ); OutputStream.Write(intBuf.Slice(0, 2)); OutputStream.Write(intBuf.Slice(0, 2)); BinaryPrimitives.WriteUInt32LittleEndian(intBuf, sizevalue);