mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-23 07:25:11 +00:00
Check crc on tar header
This commit is contained in:
@@ -134,6 +134,13 @@ internal sealed class TarHeader
|
||||
hasLongValue = false;
|
||||
} while (hasLongValue);
|
||||
|
||||
var crc = ReadAsciiInt64Base8(buffer, 148, 7);
|
||||
|
||||
if (crc != RecalculateChecksum(buffer))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Name = longName ?? ArchiveEncoding.Decode(buffer, 0, 100).TrimNulls();
|
||||
EntryType = entryType;
|
||||
Size = ReadSize(buffer);
|
||||
|
||||
@@ -217,8 +217,7 @@ public class TarArchiveTests : ArchiveTests
|
||||
{
|
||||
var archiveFullPath = Path.Combine(TEST_ARCHIVES_PATH, "Tar.Empty.tar");
|
||||
using Stream stream = File.OpenRead(archiveFullPath);
|
||||
using var archive = ArchiveFactory.Open(stream);
|
||||
Assert.True(archive.Type == ArchiveType.Tar);
|
||||
Assert.Throws<InvalidOperationException>(() => ArchiveFactory.Open(stream));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
@@ -287,4 +286,12 @@ public class TarArchiveTests : ArchiveTests
|
||||
|
||||
Assert.Equal(2, numberOfEntries);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Tar_Detect_Test()
|
||||
{
|
||||
var isTar = TarArchive.IsTarFile(Path.Combine(TEST_ARCHIVES_PATH, "false.positive.tar"));
|
||||
|
||||
Assert.False(isTar);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
tests/TestArchives/Archives/false.positive.tar
Normal file
BIN
tests/TestArchives/Archives/false.positive.tar
Normal file
Binary file not shown.
Reference in New Issue
Block a user