diff --git a/src/SharpCompress/Common/AsyncBinaryReader.cs b/src/SharpCompress/Common/AsyncBinaryReader.cs index 8c5327ae..99a29786 100644 --- a/src/SharpCompress/Common/AsyncBinaryReader.cs +++ b/src/SharpCompress/Common/AsyncBinaryReader.cs @@ -16,6 +16,11 @@ namespace SharpCompress.Common public AsyncBinaryReader(Stream stream, bool leaveOpen = false, int bufferSize = 4096) { + if (!stream.CanRead) + { + throw new ArgumentException("Stream must be readable."); + } + _originalStream = stream ?? throw new ArgumentNullException(nameof(stream)); _leaveOpen = leaveOpen; diff --git a/src/SharpCompress/Common/Tar/TarHeaderFactory.cs b/src/SharpCompress/Common/Tar/TarHeaderFactory.cs index 8f155b11..f9c58e2b 100644 --- a/src/SharpCompress/Common/Tar/TarHeaderFactory.cs +++ b/src/SharpCompress/Common/Tar/TarHeaderFactory.cs @@ -29,10 +29,10 @@ internal static class TarHeaderFactory { case StreamingMode.Seekable: { - header.DataStartPosition = reader.BaseStream.Position; + header.DataStartPosition = stream.Position; //skip to nearest 512 - reader.BaseStream.Position += PadTo512(header.Size); + stream.Position += PadTo512(header.Size); } break; case StreamingMode.Streaming: diff --git a/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs index ee8e7942..dec06f22 100644 --- a/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs @@ -175,7 +175,7 @@ public class TarReaderAsyncTests : ReaderTests await using var entryStream = await reader.OpenEntryStreamAsync(); await using var flushingStream = new FlushOnDisposeStream(entryStream); #else - using var entryStream = reader.OpenEntryStream(); + using var entryStream = await reader.OpenEntryStreamAsync(); using var flushingStream = new FlushOnDisposeStream(entryStream); #endif