From 01fee2875971921f8d0bf7420bf7c8d122984462 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:49:43 +0000 Subject: [PATCH] ShrinkStream: add uncompressedSize bounds check, remove unused CreateAsync params Agent-Logs-Url: https://github.com/adamhathcock/sharpcompress/sessions/9ed10d73-ebf8-45d3-8d25-d5aa1f4989e7 Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com> --- src/SharpCompress/Compressors/Shrink/ShrinkStream.cs | 10 +++++++++- .../Providers/Default/ShrinkCompressionProvider.cs | 1 - src/SharpCompress/packages.lock.json | 12 ++++++------ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs b/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs index b7831f45..a3e680b2 100644 --- a/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs +++ b/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using SharpCompress.Common; namespace SharpCompress.Compressors.Shrink; @@ -15,10 +16,17 @@ internal partial class ShrinkStream : Stream public ShrinkStream(Stream stream, long uncompressedSize) { + if (uncompressedSize > int.MaxValue) + { + throw new InvalidFormatException( + $"Shrink: declared uncompressed size {uncompressedSize} exceeds maximum supported size." + ); + } + _inStream = stream; _uncompressedSize = uncompressedSize; - _byteOut = new byte[_uncompressedSize]; + _byteOut = new byte[(int)_uncompressedSize]; _outBytesCount = 0L; } diff --git a/src/SharpCompress/Providers/Default/ShrinkCompressionProvider.cs b/src/SharpCompress/Providers/Default/ShrinkCompressionProvider.cs index edc3dbab..72c374ea 100644 --- a/src/SharpCompress/Providers/Default/ShrinkCompressionProvider.cs +++ b/src/SharpCompress/Providers/Default/ShrinkCompressionProvider.cs @@ -2,7 +2,6 @@ using System.IO; using System.Threading; using System.Threading.Tasks; using SharpCompress.Common; -using SharpCompress.Compressors; using SharpCompress.Compressors.Shrink; namespace SharpCompress.Providers.Default; diff --git a/src/SharpCompress/packages.lock.json b/src/SharpCompress/packages.lock.json index 5059aafe..7d5f0448 100644 --- a/src/SharpCompress/packages.lock.json +++ b/src/SharpCompress/packages.lock.json @@ -268,9 +268,9 @@ "net10.0": { "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "kICGrGYEzCNI3wPzfEXcwNHgTvlvVn9yJDhSdRK+oZQy4jvYH529u7O0xf5ocQKzOMjfS07+3z9PKRIjrFMJDA==" + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "A+5ZuQ0f449tM+MQrhf6R9ZX7lYpjk/ODEwLYKrnF6111rtARx8fVsm4YznUnQiKnnXfaXNBqgxmil6RW3L3SA==" }, "Microsoft.NETFramework.ReferenceAssemblies": { "type": "Direct", @@ -442,9 +442,9 @@ "net8.0": { "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.25, )", + "resolved": "8.0.25", + "contentHash": "sqX4nmBft05ivqKvUT4nxaN8rT3apCLt9SWFkfRrQPwra1zPwFknQAw1lleuMCKOCLvVmOWwrC2iPSm9RiXZUg==" }, "Microsoft.NETFramework.ReferenceAssemblies": { "type": "Direct",