mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-23 15:34:34 +00:00
Dont crash on reading rar5 comment
This commit is contained in:
@@ -105,7 +105,14 @@ public class RarHeaderFactory
|
||||
case HeaderCodeV.RAR5_SERVICE_HEADER:
|
||||
{
|
||||
var fh = new FileHeader(header, reader, HeaderType.Service);
|
||||
SkipData(fh, reader);
|
||||
if (fh.FileName == "CMT")
|
||||
{
|
||||
fh.PackedStream = new ReadOnlySubStream(reader.BaseStream, fh.CompressedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
SkipData(fh, reader);
|
||||
}
|
||||
return fh;
|
||||
}
|
||||
|
||||
|
||||
@@ -70,11 +70,11 @@ public abstract class RarVolume : Volume
|
||||
var part = CreateFilePart(lastMarkHeader!, fh);
|
||||
var buffer = new byte[fh.CompressedSize];
|
||||
part.GetCompressedStream().Read(buffer, 0, buffer.Length);
|
||||
Comment = System
|
||||
.Text
|
||||
.Encoding
|
||||
.UTF8
|
||||
.GetString(buffer, 0, buffer.Length - 1);
|
||||
Comment = System.Text.Encoding.UTF8.GetString(
|
||||
buffer,
|
||||
0,
|
||||
buffer.Length - 1
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -284,6 +284,12 @@ public class RarReaderTests : ReaderTests
|
||||
[Fact]
|
||||
public void Rar_Solid_Reader() => Read("Rar.solid.rar", CompressionType.Rar);
|
||||
|
||||
[Fact]
|
||||
public void Rar_Comment_Reader() => Read("Rar.comment.rar", CompressionType.Rar);
|
||||
|
||||
[Fact]
|
||||
public void Rar5_Comment_Reader() => Read("Rar5.comment.rar", CompressionType.Rar);
|
||||
|
||||
[Fact]
|
||||
public void Rar5_Solid_Reader() => Read("Rar5.solid.rar", CompressionType.Rar);
|
||||
|
||||
|
||||
BIN
tests/TestArchives/Archives/Rar.comment.rar
Normal file
BIN
tests/TestArchives/Archives/Rar.comment.rar
Normal file
Binary file not shown.
BIN
tests/TestArchives/Archives/Rar5.comment.rar
Normal file
BIN
tests/TestArchives/Archives/Rar5.comment.rar
Normal file
Binary file not shown.
Reference in New Issue
Block a user