-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
Labels
Milestone
Description
Description
I have upgraded runtime from netcoreapp3.1 to NET 6 and the code which was transforming base64 bytes containing LF characters to string without errors started to crash with IndexOutOfRangeException. Behavior is the same for Windows and Linux platforms.
Reproduction Steps
[TestFixture]
public class Fixture
{
[Test]
public void Crashes_on_runtime_greater_or_equal_to_NET_5()
{
var txt = "YWJj\nZGVm"; // abc\ndef
var base64Bytes = Encoding.UTF8.GetBytes(txt);
var stream = new MemoryStream(base64Bytes);
var base64Transform = new FromBase64Transform();
var cryptoStream = new CryptoStream(stream, base64Transform, CryptoStreamMode.Read);
var result = new MemoryStream();
cryptoStream.CopyTo(result);
Console.WriteLine(Encoding.UTF8.GetString(result.ToArray()));
}
}
Expected behavior
"abcdef" in the output, which is happening for example on netcoreapp3.1 runtime.
Actual behavior
System.IndexOutOfRangeException : Index was outside the bounds of the array.
at System.Security.Cryptography.FromBase64Transform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
at System.Security.Cryptography.CryptoStream.ReadAsyncCore(Memory`1 buffer, CancellationToken cancellationToken, Boolean useAsync)
at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.Security.Cryptography.CryptoStream.CopyTo(Stream destination, Int32 bufferSize)
at System.IO.Stream.CopyTo(Stream destination)
at ClassLibrary1.Fixture.Crashes_on_runtime_greater_or_equal_to_NET_5() in E:\cm_1\drive\ClassLibrary1\Class1.cs:line 20
Regression?
Regression happened after the upgrade from netcoreapp3.1 to NET 5/NET 6.
Known Workarounds
No response
Configuration
No response
Other information
No response
Reactions are currently unavailable