From 65a050495f25012a24b9c69d6ae4c9cfc9a75ffe Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Tue, 3 Jul 2018 00:25:05 +0200 Subject: [PATCH] add regression test for #624 --- .../Formats/Jpg/JpegDecoderTests.Images.cs | 1 + tests/ImageSharp.Tests/TestImages.cs | 1 + tests/Images/External | 2 +- ...Issue624-DhtHasWrongLength-Progressive-N.jpg | Bin 0 -> 30441 bytes 4 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 tests/Images/Input/Jpg/issues/Issue624-DhtHasWrongLength-Progressive-N.jpg diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs index 539ab73195..3c98d5be72 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Images.cs @@ -38,6 +38,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg TestImages.Jpeg.Issues.NoEoiProgressive517, TestImages.Jpeg.Issues.BadRstProgressive518, TestImages.Jpeg.Issues.MissingFF00ProgressiveBedroom159, + TestImages.Jpeg.Issues.DhtHasWrongLength624, }; /// diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 6d3a76e75f..b0bdad8e5c 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -144,6 +144,7 @@ namespace SixLabors.ImageSharp.Tests public const string NoEoiProgressive517 = "Jpg/issues/Issue517-No-EOI-Progressive.jpg"; public const string BadRstProgressive518 = "Jpg/issues/Issue518-Bad-RST-Progressive.jpg"; public const string InvalidCast520 = "Jpg/issues/Issue520-InvalidCast.jpg"; + public const string DhtHasWrongLength624 = "Jpg/issues/Issue624-DhtHasWrongLength-Progressive-N.jpg"; } public static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray(); diff --git a/tests/Images/External b/tests/Images/External index d9d93bbdd1..98fb7e2e4d 160000 --- a/tests/Images/External +++ b/tests/Images/External @@ -1 +1 @@ -Subproject commit d9d93bbdd18dd7b818c0d19cc8f967be98045d3c +Subproject commit 98fb7e2e4d5935b1c733bd2b206b6145b71ef378 diff --git a/tests/Images/Input/Jpg/issues/Issue624-DhtHasWrongLength-Progressive-N.jpg b/tests/Images/Input/Jpg/issues/Issue624-DhtHasWrongLength-Progressive-N.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2077b75182ea8feff5e5232fa025f197cc8a483a GIT binary patch literal 30441 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 literal 0 HcmV?d00001