Browse Source

Fix #403

pull/406/head
James Jackson-South 8 years ago
parent
commit
6469a42e77
  1. 3
      src/ImageSharp/Formats/Gif/GifDecoderCore.cs
  2. 13
      tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
  3. 1
      tests/ImageSharp.Tests/TestImages.cs
  4. BIN
      tests/Images/Input/Gif/issues/issue403_baddescriptorwidth.gif

3
src/ImageSharp/Formats/Gif/GifDecoderCore.cs

@ -443,7 +443,8 @@ namespace SixLabors.ImageSharp.Formats.Gif
var rgba = new Rgba32(0, 0, 0, 255);
for (int x = descriptor.Left; x < descriptor.Left + descriptor.Width; x++)
// #403 The left + width value can be larger than the image width
for (int x = descriptor.Left; x < descriptor.Left + descriptor.Width && x < rowSpan.Length; x++)
{
int index = indices[i];

13
tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs

@ -136,7 +136,7 @@ namespace SixLabors.ImageSharp.Tests
}
[Theory]
[WithFileCollection(nameof(BadAppExtFiles), PixelTypes)]
[WithFileCollection(nameof(BadAppExtFiles), PixelTypes.Rgba32)]
public void DecodeBadApplicationExtensionLength<TPixel>(TestImageProvider<TPixel> imageProvider)
where TPixel : struct, IPixel<TPixel>
{
@ -145,5 +145,16 @@ namespace SixLabors.ImageSharp.Tests
imageProvider.Utility.SaveTestOutputFile(image, "bmp");
}
}
[Theory]
[WithFile(TestImages.Gif.Issues.BadDescriptorWidth, PixelTypes.Rgba32)]
public void DecodeBadDescriptorDimensionsLength<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage())
{
provider.Utility.SaveTestOutputFile(image, "bmp");
}
}
}
}

1
tests/ImageSharp.Tests/TestImages.cs

@ -161,6 +161,7 @@ namespace SixLabors.ImageSharp.Tests
{
public const string BadAppExtLength = "Gif/issues/issue405_badappextlength252.gif";
public const string BadAppExtLength_2 = "Gif/issues/issue405_badappextlength252-2.gif";
public const string BadDescriptorWidth = "Gif/issues/issue403_baddescriptorwidth.gif";
}
public static readonly string[] All = { Rings, Giphy, Cheers, Trans, Kumin };

BIN
tests/Images/Input/Gif/issues/issue403_baddescriptorwidth.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 KiB

Loading…
Cancel
Save