From d3a43a37eefbcdfb9ef6c7e9e1fe70b4287662e7 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 2 Feb 2021 15:50:14 +0100 Subject: [PATCH] Throw Exception when packed bits compressed data is not enough --- .../Compression/Decompressors/PackBitsTiffCompression.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs index 6fd939e61..9786ef5ff 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs @@ -43,6 +43,11 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso int literalOffset = compressedOffset + 1; int literalLength = compressedData[compressedOffset] + 1; + if ((literalOffset + literalLength) > compressedData.Length) + { + TiffThrowHelper.ThrowImageFormatException("Tiff packbits compression error: not enough data."); + } + compressedData.Slice(literalOffset, literalLength).CopyTo(buffer.Slice(decompressedOffset)); compressedOffset += literalLength + 1;