mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-22 23:15:20 +00:00
Merge pull request #784 from Erior/feature/rar-comment
Dont crash on reading rar5 comment #783
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using SharpCompress.Common.Rar.Headers;
|
||||
using SharpCompress.IO;
|
||||
using SharpCompress.Readers;
|
||||
@@ -70,11 +71,7 @@ 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 = 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