From 94eb476764d264d8742e9d8554129e8b6654de2a Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 20 Nov 2019 22:02:04 +1100 Subject: [PATCH] Fix #1047 --- src/ImageSharp/Formats/Png/PngDecoderCore.cs | 5 +++++ src/ImageSharp/Formats/Png/PngThrowHelper.cs | 4 ++++ .../Formats/Png/PngDecoderTests.Chunks.cs | 21 ------------------ .../Formats/Png/PngDecoderTests.cs | 15 ++++++++++--- tests/ImageSharp.Tests/TestImages.cs | 1 + tests/Images/Input/Png/issues/Issue_1047.png | Bin 0 -> 44638 bytes 6 files changed, 22 insertions(+), 24 deletions(-) create mode 100644 tests/Images/Input/Png/issues/Issue_1047.png diff --git a/src/ImageSharp/Formats/Png/PngDecoderCore.cs b/src/ImageSharp/Formats/Png/PngDecoderCore.cs index 19e8b62fe..b24a5eabd 100644 --- a/src/ImageSharp/Formats/Png/PngDecoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngDecoderCore.cs @@ -1159,6 +1159,7 @@ namespace SixLabors.ImageSharp.Formats.Png /// /// Reads the cycle redundancy chunk from the data. /// + [MethodImpl(InliningOptions.ShortMethod)] private uint ReadChunkCrc() { uint crc = 0; @@ -1174,6 +1175,7 @@ namespace SixLabors.ImageSharp.Formats.Png /// Skips the chunk data and the cycle redundancy chunk read from the data. /// /// The image format chunk. + [MethodImpl(InliningOptions.ShortMethod)] private void SkipChunkDataAndCrc(in PngChunk chunk) { this.currentStream.Skip(chunk.Length); @@ -1184,6 +1186,7 @@ namespace SixLabors.ImageSharp.Formats.Png /// Reads the chunk data from the stream. /// /// The length of the chunk data to read. + [MethodImpl(InliningOptions.ShortMethod)] private IManagedByteBuffer ReadChunkData(int length) { // We rent the buffer here to return it afterwards in Decode() @@ -1200,6 +1203,7 @@ namespace SixLabors.ImageSharp.Formats.Png /// /// Thrown if the input stream is not valid. /// + [MethodImpl(InliningOptions.ShortMethod)] private PngChunkType ReadChunkType() { if (this.currentStream.Read(this.buffer, 0, 4) == 4) @@ -1221,6 +1225,7 @@ namespace SixLabors.ImageSharp.Formats.Png /// /// Whether the length was read. /// + [MethodImpl(InliningOptions.ShortMethod)] private bool TryReadChunkLength(out int result) { if (this.currentStream.Read(this.buffer, 0, 4) == 4) diff --git a/src/ImageSharp/Formats/Png/PngThrowHelper.cs b/src/ImageSharp/Formats/Png/PngThrowHelper.cs index bc6093948..00b40c50b 100644 --- a/src/ImageSharp/Formats/Png/PngThrowHelper.cs +++ b/src/ImageSharp/Formats/Png/PngThrowHelper.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System; +using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace SixLabors.ImageSharp.Formats.Png @@ -17,13 +18,16 @@ namespace SixLabors.ImageSharp.Formats.Png [MethodImpl(InliningOptions.ColdPath)] public static void ThrowNoData() => throw new ImageFormatException("PNG Image does not contain a data chunk"); + [MethodImpl(InliningOptions.ColdPath)] public static void ThrowInvalidChunkType() => throw new ImageFormatException("Invalid PNG data."); [MethodImpl(InliningOptions.ColdPath)] public static void ThrowInvalidChunkCrc(string chunkTypeName) => throw new ImageFormatException($"CRC Error. PNG {chunkTypeName} chunk is corrupt!"); + [MethodImpl(InliningOptions.ColdPath)] public static void ThrowNotSupportedColor() => new NotSupportedException("Unsupported PNG color type"); + [MethodImpl(InliningOptions.ColdPath)] public static void ThrowUnknownFilter() => throw new ImageFormatException("Unknown filter type."); } } diff --git a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.Chunks.cs b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.Chunks.cs index e976d5a76..660d5b724 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.Chunks.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.Chunks.cs @@ -54,7 +54,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png [InlineData((uint)PngChunkType.Header)] // IHDR [InlineData((uint)PngChunkType.Palette)] // PLTE // [InlineData(PngChunkTypes.Data)] //TODO: Figure out how to test this - [InlineData((uint)PngChunkType.End)] // IEND public void Decode_IncorrectCRCForCriticalChunk_ExceptionIsThrown(uint chunkType) { string chunkName = GetChunkTypeName(chunkType); @@ -74,26 +73,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png } } - [Theory] - [InlineData((uint)PngChunkType.Gamma)] // gAMA - [InlineData((uint)PngChunkType.Transparency)] // tRNS - [InlineData((uint)PngChunkType.Physical)] // pHYs: It's ok to test physical as we don't throw for duplicate chunks. - //[InlineData(PngChunkTypes.Text)] //TODO: Figure out how to test this - public void Decode_IncorrectCRCForNonCriticalChunk_ExceptionIsThrown(uint chunkType) - { - string chunkName = GetChunkTypeName(chunkType); - - using (var memStream = new MemoryStream()) - { - WriteHeaderChunk(memStream); - WriteChunk(memStream, chunkName); - WriteDataChunk(memStream); - - var decoder = new PngDecoder(); - decoder.Decode(null, memStream); - } - } - private static string GetChunkTypeName(uint value) { var data = new byte[4]; diff --git a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs index e064c0fb0..1acb4fe2d 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs @@ -4,11 +4,11 @@ // ReSharper disable InconsistentNaming using System.IO; - +using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; - +using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; using Xunit; namespace SixLabors.ImageSharp.Tests.Formats.Png @@ -42,6 +42,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png TestImages.Png.Bad.ZlibOverflow, TestImages.Png.Bad.ZlibOverflow2, TestImages.Png.Bad.ZlibZtxtBadHeader, + TestImages.Png.Bad.Issue1047_BadEndChunk }; public static readonly string[] TestImages48Bpp = @@ -90,7 +91,15 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png using (Image image = provider.GetImage(new PngDecoder())) { image.DebugSave(provider); - image.CompareToOriginal(provider, ImageComparer.Exact); + + if (provider.Utility.SourceFileOrDescription == TestImages.Png.Bad.Issue1047_BadEndChunk) + { + image.CompareToOriginal(provider, ImageComparer.Exact, (IImageDecoder)SystemDrawingReferenceDecoder.Instance); + } + else + { + image.CompareToOriginal(provider, ImageComparer.Exact); + } } } diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 177749869..d19dbe834 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -99,6 +99,7 @@ namespace SixLabors.ImageSharp.Tests public const string ZlibOverflow = "Png/zlib-overflow.png"; public const string ZlibOverflow2 = "Png/zlib-overflow2.png"; public const string ZlibZtxtBadHeader = "Png/zlib-ztxt-bad-header.png"; + public const string Issue1047_BadEndChunk = "Png/issues/Issue_1047.png"; } public static readonly string[] All = diff --git a/tests/Images/Input/Png/issues/Issue_1047.png b/tests/Images/Input/Png/issues/Issue_1047.png new file mode 100644 index 0000000000000000000000000000000000000000..0f85dc53c28f9d4bfeecc4fa15c6e6c5cdd86145 GIT binary patch literal 44638 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