From d56322866c84e476beef4bc6fc3c42a81e6676b2 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sun, 16 Apr 2017 10:04:14 +0200 Subject: [PATCH 1/2] Fixed solution items. --- ImageSharp.sln | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ImageSharp.sln b/ImageSharp.sln index 6e389421e7..8ec2cf53b4 100644 --- a/ImageSharp.sln +++ b/ImageSharp.sln @@ -1,18 +1,17 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 +VisualStudioVersion = 15.0.26403.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{C317F1B1-D75E-4C6D-83EB-80367343E0D7}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .travis.yml = .travis.yml appveyor.yml = appveyor.yml + codecov.yml = codecov.yml CodeCoverage.runsettings = CodeCoverage.runsettings - contributing.md = contributing.md - dotnet-latest.ps1 = dotnet-latest.ps1 + .github\CONTRIBUTING.md = .github\CONTRIBUTING.md features.md = features.md - global.json = global.json ImageSharp.ruleset = ImageSharp.ruleset ImageSharp.sln.DotSettings = ImageSharp.sln.DotSettings NuGet.config = NuGet.config From 88c3fb3888ba576b4b4179704e57f556f6e8d021 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sun, 16 Apr 2017 10:29:06 +0200 Subject: [PATCH 2/2] Added extra checks to the ExifReader (fixes #175). --- .../MetaData/Profiles/Exif/ExifReader.cs | 10 +++++- .../MetaData/Profiles/Exif/ExifReaderTests.cs | 35 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifReaderTests.cs diff --git a/src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs b/src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs index 58f32bdd83..6164bd228e 100644 --- a/src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs +++ b/src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs @@ -73,6 +73,8 @@ namespace ImageSharp /// public Collection Read(byte[] data) { + DebugGuard.NotNull(data, nameof(data)); + Collection result = new Collection(); this.exifData = data; @@ -390,7 +392,13 @@ namespace ImageSharp private string GetString(uint length) { - return ToString(this.GetBytes(length)); + byte[] data = this.GetBytes(length); + if (data == null || data.Length == 0) + { + return null; + } + + return ToString(data); } private void GetThumbnail(uint offset) diff --git a/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifReaderTests.cs b/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifReaderTests.cs new file mode 100644 index 0000000000..dc62f1cbf3 --- /dev/null +++ b/tests/ImageSharp.Tests/MetaData/Profiles/Exif/ExifReaderTests.cs @@ -0,0 +1,35 @@ +// +// Copyright (c) James Jackson-South and contributors. +// Licensed under the Apache License, Version 2.0. +// + +namespace ImageSharp.Tests +{ + using System.Collections.ObjectModel; + using Xunit; + + public class ExifReaderTests + { + [Fact] + public void Read_DataIsEmpty_ReturnsEmptyCollection() + { + ExifReader reader = new ExifReader(); + byte[] data = new byte[] { }; + + Collection result = reader.Read(data); + + Assert.Equal(0, result.Count); + } + + [Fact] + public void Read_DataIsMinimal_ReturnsEmptyCollection() + { + ExifReader reader = new ExifReader(); + byte[] data = new byte[] { 69, 120, 105, 102, 0, 0 }; + + Collection result = reader.Read(data); + + Assert.Equal(0, result.Count); + } + } +}