From a01ff4a6427f4ea25d1f132424cdff7525599357 Mon Sep 17 00:00:00 2001 From: Titus Date: Sat, 19 Feb 2022 10:14:46 -0500 Subject: [PATCH 1/3] Fix issue in PNG identify method to skip "uninteresting" chunks, including sBIT. --- src/ImageSharp/Formats/Png/PngDecoderCore.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ImageSharp/Formats/Png/PngDecoderCore.cs b/src/ImageSharp/Formats/Png/PngDecoderCore.cs index f5fc86ee4..a7f4d5e8d 100644 --- a/src/ImageSharp/Formats/Png/PngDecoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngDecoderCore.cs @@ -336,6 +336,9 @@ namespace SixLabors.ImageSharp.Formats.Png break; case PngChunkType.End: goto EOF; + default: + this.SkipChunkDataAndCrc(chunk); + break; } } finally From b0b7ae641be7123c25a5e75d9ac5937643fc45f4 Mon Sep 17 00:00:00 2001 From: Titus Date: Sat, 19 Feb 2022 13:53:04 -0500 Subject: [PATCH 2/3] Moved SkipChunkDataAndCrc call to "correct" location for this issue --- src/ImageSharp/Formats/Png/PngDecoderCore.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ImageSharp/Formats/Png/PngDecoderCore.cs b/src/ImageSharp/Formats/Png/PngDecoderCore.cs index a7f4d5e8d..8d0b49261 100644 --- a/src/ImageSharp/Formats/Png/PngDecoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngDecoderCore.cs @@ -336,9 +336,6 @@ namespace SixLabors.ImageSharp.Formats.Png break; case PngChunkType.End: goto EOF; - default: - this.SkipChunkDataAndCrc(chunk); - break; } } finally @@ -1401,6 +1398,8 @@ namespace SixLabors.ImageSharp.Formats.Png { chunk = new PngChunk(length, type); + this.SkipChunkDataAndCrc(chunk); + return true; } From d4180a92c5b691cf082caba03b30de3e2c2262b4 Mon Sep 17 00:00:00 2001 From: Titus Date: Sat, 19 Feb 2022 13:59:20 -0500 Subject: [PATCH 3/3] cleaned up whitespace --- src/ImageSharp/Formats/Png/PngDecoderCore.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ImageSharp/Formats/Png/PngDecoderCore.cs b/src/ImageSharp/Formats/Png/PngDecoderCore.cs index 8d0b49261..56ad4ad86 100644 --- a/src/ImageSharp/Formats/Png/PngDecoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngDecoderCore.cs @@ -336,6 +336,14 @@ namespace SixLabors.ImageSharp.Formats.Png break; case PngChunkType.End: goto EOF; + + default: + if (this.colorMetadataOnly) + { + this.SkipChunkDataAndCrc(chunk); + } + + break; } } finally @@ -1398,8 +1406,6 @@ namespace SixLabors.ImageSharp.Formats.Png { chunk = new PngChunk(length, type); - this.SkipChunkDataAndCrc(chunk); - return true; }