You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The SetData method in Zip/ZipExtraData.cs crashes with a System.IO.EndOfStreamException in two specific scenarios:
when count is set to 0
when index is equal to count
In both cases, the documentation does not indicate that these inputs are invalid.
I think, based on the documentation and signature, one would expect no operation to occur for these cases, as there is no data to process.
Steps to reproduce
The following two test cases can be used to demonstrate the behavior.
As of right now, they would both fail.
[Test]publicvoidSetDataCountZero(){varextendedUnixData=newExtendedUnixData();byte[]data=newbyte[]{1,2,3,4};intindex=0;intcount=0;// Nothing available to be readAssert.DoesNotThrow(()=>extendedUnixData.SetData(data,index,count));}[Test]publicvoidSetDataOffsetAndCountEqual(){varextendedUnixData=newExtendedUnixData();byte[]data=newbyte[]{1,2,3,4};intindex=4;intcount=4;Assert.DoesNotThrow(()=>extendedUnixData.SetData(data,index,count));}
Expected behavior
I would expect the method to handle this gracefully and perform no operation.
I recommend that either, 1. the implementation is updated to handle these edge cases (e.g. return without reading from stream)
or
2. the documentation is adjusted to explicitly describe these constraints.
For 1., a simple check paired with an early return would do the trick:
/// <summary>/// Set the data from the raw values provided./// </summary>/// <param name = "data">The raw data to extract values from.</param>/// <param name = "index">The index to start extracting values from.</param>/// <param name = "count">The number of bytes available.</param>publicvoidSetData(byte[]data,intindex,intcount){if(count==0||index==count)return;using(MemoryStreamms=newMemoryStream(data,index,count,false)){ ...}}
Operating System
macOS
Framework Version
.NET 6
Tags
ZIP
Additional context
No response
The text was updated successfully, but these errors were encountered:
Describe the bug
Hi :)
The SetData method in
Zip/ZipExtraData.cs
crashes with aSystem.IO.EndOfStreamException
in two specific scenarios:count
is set to 0index
is equal tocount
In both cases, the documentation does not indicate that these inputs are invalid.
I think, based on the documentation and signature, one would expect no operation to occur for these cases, as there is no data to process.
Steps to reproduce
The following two test cases can be used to demonstrate the behavior.
As of right now, they would both fail.
Expected behavior
I would expect the method to handle this gracefully and perform no operation.
I recommend that either,
1. the implementation is updated to handle these edge cases (e.g. return without reading from stream)
or
2. the documentation is adjusted to explicitly describe these constraints.
For 1., a simple check paired with an early return would do the trick:
Operating System
macOS
Framework Version
.NET 6
Tags
ZIP
Additional context
No response
The text was updated successfully, but these errors were encountered: