From a09b915d97bc3f8c7d0794942544ea3911f9abc2 Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Sun, 15 Aug 2021 15:28:57 +0300 Subject: [PATCH] Validate CompressionLevel in BrotliStream ctor Fix #46595 --- .../src/System/IO/Compression/BrotliUtils.cs | 2 +- .../src/System/IO/Compression/enc/BrotliStream.Compress.cs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliUtils.cs b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliUtils.cs index d292a6725cb95..f865db32ed862 100644 --- a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliUtils.cs +++ b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliUtils.cs @@ -9,7 +9,7 @@ internal static partial class BrotliUtils public const int WindowBits_Default = 22; public const int WindowBits_Max = 24; public const int Quality_Min = 0; - public const int Quality_Default = 11; + public const int Quality_Default = 6; public const int Quality_Max = 11; public const int MaxInputSize = int.MaxValue - 515; // 515 is the max compressed extra bytes diff --git a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/enc/BrotliStream.Compress.cs b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/enc/BrotliStream.Compress.cs index efa17bc5f9cbb..5d3daa22c1229 100644 --- a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/enc/BrotliStream.Compress.cs +++ b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/enc/BrotliStream.Compress.cs @@ -23,6 +23,11 @@ public BrotliStream(Stream stream, CompressionLevel compressionLevel) : this(str /// to leave the stream open after disposing the object; otherwise, . public BrotliStream(Stream stream, CompressionLevel compressionLevel, bool leaveOpen) : this(stream, CompressionMode.Compress, leaveOpen) { + if ((int)compressionLevel is < BrotliUtils.Quality_Min or > BrotliUtils.Quality_Max) + { + throw new ArgumentException(SR.ArgumentOutOfRange_Enum, nameof(compressionLevel)); + } + _encoder.SetQuality(BrotliUtils.GetQualityFromCompressionLevel(compressionLevel)); }