Skip to content

Commit

Permalink
Merge pull request #798 from Erior/feature/Fix-crash-when-not-setting…
Browse files Browse the repository at this point in the history
…-password-for-rar5

Set Empty string for Rar5 password as default
  • Loading branch information
adamhathcock authored Jan 8, 2024
2 parents a0d5037 + 46d4b26 commit 0a20b91
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/SharpCompress/Common/Rar/CryptKey5.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ internal class CryptKey5 : ICryptKey

public CryptKey5(string password, Rar5CryptoInfo rar5CryptoInfo)
{
_password = password;
_password = password ?? "";
_cryptoInfo = rar5CryptoInfo;
}

Expand Down
23 changes: 23 additions & 0 deletions tests/SharpCompress.Test/ArchiveTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,29 @@ protected void ArchiveFileRead(string testArchive, ReaderOptions? readerOptions
VerifyFiles();
}

protected void ArchiveFileSkip(
string testArchive,
string fileOrder,
ReaderOptions? readerOptions = null
)
{
#if !NETFRAMEWORK
if (!OperatingSystem.IsWindows())
{
fileOrder = fileOrder.Replace('\\', '/');
}
#endif
var expected = new Stack<string>(fileOrder.Split(' '));
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using (var archive = ArchiveFactory.Open(testArchive, readerOptions))
{
foreach (var entry in archive.Entries)
{
Assert.Equal(expected.Pop(), entry.Key);
}
}
}

/// <summary>
/// Demonstrate the ExtractionOptions.PreserveFileTime and ExtractionOptions.PreserveAttributes extract options
/// </summary>
Expand Down
30 changes: 30 additions & 0 deletions tests/SharpCompress.Test/Rar/RarArchiveTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -611,4 +611,34 @@ private void DoRar_IsFirstVolume_False(string notFirstFilename)

[Fact]
public void Rar5_CRC_Blake2_Archive() => ArchiveFileRead("Rar5.crc_blake2.rar");

[Fact]
void Rar_Iterate_Archive() =>
ArchiveFileSkip("Rar.rar", "Failure jpg exe Empty jpg\\test.jpg exe\\test.exe тест.txt");

[Fact]
public void Rar2_Iterate_Archive() =>
ArchiveFileSkip("Rar2.rar", "Failure Empty тест.txt jpg\\test.jpg exe\\test.exe jpg exe");

[Fact]
public void Rar4_Iterate_Archive() =>
ArchiveFileSkip("Rar4.rar", "Failure Empty jpg exe тест.txt jpg\\test.jpg exe\\test.exe");

[Fact]
public void Rar5_Iterate_Archive() =>
ArchiveFileSkip("Rar5.rar", "Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe");

[Fact]
public void Rar_Encrypted_Iterate_Archive() =>
ArchiveFileSkip(
"Rar.encrypted_filesOnly.rar",
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe"
);

[Fact]
public void Rar5_Encrypted_Iterate_Archive() =>
ArchiveFileSkip(
"Rar5.encrypted_filesOnly.rar",
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe"
);
}
51 changes: 51 additions & 0 deletions tests/SharpCompress.Test/Rar/RarReaderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -378,4 +378,55 @@ public void Rar_NullReference()
}
}
}

[Fact]
public void Rar_Iterate_Reader() =>
Iterate(
"Rar.rar",
"Failure jpg exe Empty jpg\\test.jpg exe\\test.exe тест.txt",
CompressionType.Rar
);

[Fact]
public void Rar2_Iterate_Archive() =>
Iterate(
"Rar2.rar",
"Failure Empty тест.txt jpg\\test.jpg exe\\test.exe jpg exe",
CompressionType.Rar
);

[Fact]
public void Rar4_Iterate_Archive() =>
Iterate(
"Rar4.rar",
"Failure Empty jpg exe тест.txt jpg\\test.jpg exe\\test.exe",
CompressionType.Rar
);

[Fact]
public void Rar5_Iterate_Archive() =>
Iterate(
"Rar5.rar",
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe",
CompressionType.Rar
);

[Fact]
public void Rar_Encrypted_Iterate_Archive() =>
Iterate(
"Rar.encrypted_filesOnly.rar",
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe",
CompressionType.Rar
);

[Fact]
public void Rar5_Encrypted_Iterate_Archive() =>
Assert.Throws<CryptographicException>(
() =>
Iterate(
"Rar5.encrypted_filesOnly.rar",
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe",
CompressionType.Rar
)
);
}
30 changes: 30 additions & 0 deletions tests/SharpCompress.Test/ReaderTests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using SharpCompress.Common;
using SharpCompress.IO;
Expand Down Expand Up @@ -67,4 +69,32 @@ public void UseReader(IReader reader, CompressionType expectedCompression)
}
}
}

protected void Iterate(
string testArchive,
string fileOrder,
CompressionType expectedCompression,
ReaderOptions? options = null
)
{
#if !NETFRAMEWORK
if (!OperatingSystem.IsWindows())
{
fileOrder = fileOrder.Replace('\\', '/');
}
#endif
var expected = new Stack<string>(fileOrder.Split(' '));

testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using var file = File.OpenRead(testArchive);
using var forward = new ForwardOnlyStream(file);
using (var reader = ReaderFactory.Open(forward, options))
{
while (reader.MoveToNextEntry())
{
Assert.Equal(expectedCompression, reader.Entry.CompressionType);
Assert.Equal(expected.Pop(), reader.Entry.Key);
}
}
}
}

0 comments on commit 0a20b91

Please sign in to comment.