Be explicit about zip64 extra field sizes. Formatting

This commit is contained in:
Adam Hathcock
2021-02-13 07:05:53 +00:00
parent c4f7433584
commit 2dd17e3882
2 changed files with 29 additions and 10 deletions

View File

@@ -72,16 +72,35 @@ namespace SharpCompress.Common.Zip.Headers
private void Process()
{
if (DataBytes.Length >= 8)
{
UncompressedSize = BinaryPrimitives.ReadInt64LittleEndian(DataBytes);
if (DataBytes.Length >= 16)
CompressedSize = BinaryPrimitives.ReadInt64LittleEndian(DataBytes.AsSpan(8));
if (DataBytes.Length >= 24)
RelativeOffsetOfEntryHeader = BinaryPrimitives.ReadInt64LittleEndian(DataBytes.AsSpan(16));
if (DataBytes.Length >= 28)
VolumeNumber = BinaryPrimitives.ReadUInt32LittleEndian(DataBytes.AsSpan(24));
}
if (DataBytes.Length > 28)
throw new ArchiveException("Unexpected size of of Zip64 extended information extra field");
if (DataBytes.Length >= 16)
{
CompressedSize = BinaryPrimitives.ReadInt64LittleEndian(DataBytes.AsSpan(8));
}
if (DataBytes.Length >= 24)
{
RelativeOffsetOfEntryHeader = BinaryPrimitives.ReadInt64LittleEndian(DataBytes.AsSpan(16));
}
if (DataBytes.Length >= 28)
{
VolumeNumber = BinaryPrimitives.ReadUInt32LittleEndian(DataBytes.AsSpan(24));
}
switch (DataBytes.Length)
{
case 8:
case 16:
case 24:
case 28:
break;
default:
throw new ArchiveException($"Unexpected size of of Zip64 extended information extra field: {DataBytes.Length}");
}
}
public long UncompressedSize { get; private set; }

View File

@@ -17,8 +17,8 @@ namespace SharpCompress.Test.GZip
{
Read("Tar.tar.gz", CompressionType.GZip);
}
[Fact]
public void GZip_Reader_Generic2()
{