GetNextEntryAsync might use too large buffer
还没有人认领这个 Issue。
评估
调研方向
从 src/ICSharpCode.SharpZipLib/Tar/TarInputStream.cs 中两个分配 header 缓冲区的位置开始,然后检查 TarBuffer.ReadBlockIntAsync() 及其精确长度检查。使用 TAR 输入验证行为,并确认当 ArrayPool 返回的缓冲区大于 BlockSize 时,GetNextEntryAsync 完成时不会引发异常。
由索引模型根据 Issue 内容生成。
描述
Describe the bug
For TAR files GetNextEntryAsync tries to allocates a byte[] buffer of BlockSize 512, using .Rent():
But .Rent() returns at least the requested size.
After this, in TarBuffer.ReadBlockIntAsync() checkes if buffer size is exactly the same as the requested BlockSize.
if (buffer.Length != BlockSize)
{
throw new ArgumentException("BUG: buffer must have length BlockSize");
}
Sometimes headerBuf becomes larger than the requested TarBuffer.BlockSize (in my case 1024) and the ArgumentException("BUG: buffer must have length BlockSize") is thrown.
Possible fix:
if (buffer.Length < BlockSize)
{
throw new ArgumentException("BUG: buffer must have length BlockSize");
}
Reproduction Code
No response
Steps to reproduce
N/A
Expected behavior
No exception for larger buffers
Operating System
No response
Framework Version
No response
Tags
No response
Additional context
No response
- 主要语言
- C#
- 星标
- 3.9k
- 派生
- 1k
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
icsharpcode/SharpZipLib 的其他 Issue
-
*no response* bug
难度 1/5 1 小时以内 新手友好度 78/100
icsharpcode/SharpZipLib#905 · 1 条评论 ·
-
bug bzip2
难度 4/5 3-5 天 新手友好度 45/100
icsharpcode/SharpZipLib#904 ·
-
enhancement zip
难度 2/5 1-2 天 新手友好度 55/100
icsharpcode/SharpZipLib#903 ·
-
*no response* bug
难度 4/5 3-5 天 新手友好度 32/100
icsharpcode/SharpZipLib#901 · 1 条评论 ·
-
*no response* bug
难度 4/5 3-5 天 新手友好度 35/100
icsharpcode/SharpZipLib#894 · 1 条评论 ·
查看 icsharpcode/SharpZipLib 的全部 Issue
相似的 Issue
-
core dependencies
难度 1/5 1 小时以内 新手友好度 80/100
-
bug frontend good first issue
难度 2/5 1-3 小时 新手友好度 75/100
-
NavigationViewItemAutomationPeer implements IInvokeProvider but never advertises the Invoke pattern 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
unoplatform/uno#24629 ·
-
agentic-workflows Needs: Triage :mag: State: In-PR
难度 2/5 1-3 小时 新手友好度 70/100
-
Down / Waiting for removal
难度 2/5 1-3 小时 新手友好度 70/100