From bbf6b22b83731d952b73df649ba08f6b037ea28d Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Mon, 21 May 2018 11:50:04 +0200 Subject: [PATCH] Added unit test. --- .../MetaData/Profiles/Exif/ExifProfileTests.cs | 16 ++++++++++++++++ tests/ImageSharp.Tests/TestImages.cs | 1 + .../Input/Jpg/issues/Issue520-InvalidCast.jpg | Bin 0 -> 7751 bytes 3 files changed, 17 insertions(+) create mode 100644 tests/Images/Input/Jpg/issues/Issue520-InvalidCast.jpg diff --git a/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifProfileTests.cs b/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifProfileTests.cs index d98c61279..3c69b57fd 100644 --- a/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifProfileTests.cs +++ b/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifProfileTests.cs @@ -292,6 +292,22 @@ namespace SixLabors.ImageSharp.Tests } } + [Fact] + public void TestArrayValueWithUnspecifiedSize() + { + // This images contains array in the exif profile that has zero components. + Image image = TestFile.Create(TestImages.Jpeg.Issues.InvalidCast520).CreateImage(); + + ExifProfile profile = image.MetaData.ExifProfile; + Assert.NotNull(profile); + + // Force parsing of the profile. + Assert.Equal(24, profile.Values.Count); + + byte[] bytes = profile.ToByteArray(); + Assert.Equal(495, bytes.Length); + } + private static ExifProfile GetExifProfile() { Image image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateImage(); diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 85f12bc80..d261f9497 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -136,6 +136,7 @@ namespace SixLabors.ImageSharp.Tests public const string MultiHuffmanBaseline394 = "Jpg/issues/Issue394-MultiHuffmanBaseline-Speakers.jpg"; 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 static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray(); diff --git a/tests/Images/Input/Jpg/issues/Issue520-InvalidCast.jpg b/tests/Images/Input/Jpg/issues/Issue520-InvalidCast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf7c4c72a412dcec48d486dde63bb70ebd7e3bc0 GIT binary patch literal 7751 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