mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-22 23:15:20 +00:00
LZMA EOS marker detection
This commit is contained in:
@@ -207,14 +207,23 @@ public class LzmaStream : Stream
|
||||
|
||||
if (_availableBytes == 0 && !_uncompressedChunk)
|
||||
{
|
||||
_rangeDecoder.ReleaseStream();
|
||||
// Check range corruption scenario
|
||||
if (
|
||||
!_rangeDecoder.IsFinished
|
||||
|| (_rangeDecoderLimit >= 0 && _rangeDecoder._total != _rangeDecoderLimit)
|
||||
)
|
||||
{
|
||||
throw new DataErrorException();
|
||||
// Stream might have End Of Stream marker
|
||||
_outWindow.SetLimit(toProcess + 1);
|
||||
if (!_decoder.Code(_dictionarySize, _outWindow, _rangeDecoder))
|
||||
{
|
||||
_rangeDecoder.ReleaseStream();
|
||||
throw new DataErrorException();
|
||||
}
|
||||
}
|
||||
|
||||
_rangeDecoder.ReleaseStream();
|
||||
|
||||
_inputPosition += _rangeDecoder._total;
|
||||
if (_outWindow.HasPending)
|
||||
{
|
||||
|
||||
@@ -135,6 +135,9 @@ public class SevenZipArchiveTests : ArchiveTests
|
||||
)
|
||||
);
|
||||
|
||||
[Fact]
|
||||
public void SevenZipArchive_EOS_FileRead() => ArchiveFileRead("7Zip.eos.7z");
|
||||
|
||||
[Fact]
|
||||
public void SevenZipArchive_Delta_FileRead() => ArchiveFileRead("7Zip.delta.7z");
|
||||
|
||||
|
||||
BIN
tests/TestArchives/Archives/7Zip.eos.7z
Normal file
BIN
tests/TestArchives/Archives/7Zip.eos.7z
Normal file
Binary file not shown.
Reference in New Issue
Block a user