From e0d14b1a9e9d26bf01b3e2782aa7253f791255ee Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 10 Aug 2023 19:44:33 +1000 Subject: [PATCH] Backport #2501 --- .../Formats/Pbm/BufferedReadStreamExtensions.cs | 2 +- .../ImageSharp.Tests/Formats/Pbm/PbmMetadataTests.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ImageSharp/Formats/Pbm/BufferedReadStreamExtensions.cs b/src/ImageSharp/Formats/Pbm/BufferedReadStreamExtensions.cs index 581d3e592..a1d61882f 100644 --- a/src/ImageSharp/Formats/Pbm/BufferedReadStreamExtensions.cs +++ b/src/ImageSharp/Formats/Pbm/BufferedReadStreamExtensions.cs @@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.Formats.Pbm { innerValue = stream.ReadByte(); } - while (innerValue != 0x0a); + while (innerValue is not 0x0a and not -0x1); // Continue searching for whitespace. val = innerValue; diff --git a/tests/ImageSharp.Tests/Formats/Pbm/PbmMetadataTests.cs b/tests/ImageSharp.Tests/Formats/Pbm/PbmMetadataTests.cs index 7915d224a..37052dbaf 100644 --- a/tests/ImageSharp.Tests/Formats/Pbm/PbmMetadataTests.cs +++ b/tests/ImageSharp.Tests/Formats/Pbm/PbmMetadataTests.cs @@ -1,7 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using System; using System.IO; +using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Pbm; using Xunit; @@ -82,5 +84,15 @@ namespace SixLabors.ImageSharp.Tests.Formats.Pbm Assert.NotNull(bitmapMetadata); Assert.Equal(expectedComponentType, bitmapMetadata.ComponentType); } + + [Fact] + public void Identify_HandlesCraftedDenialOfServiceString() + { + byte[] bytes = Convert.FromBase64String("UDEjWAAACQAAAAA="); + IImageInfo info = Image.Identify(bytes); + Assert.Equal(default, info.Size()); + IImageFormat format = Configuration.Default.ImageFormatsManager.FindFormatByFileExtension("pbm"); + Assert.Equal("PBM", format.Name); + } } }