File tree Expand file tree Collapse file tree 4 files changed +26
-0
lines changed
src/ImageSharp/Formats/Gif Expand file tree Collapse file tree 4 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -406,6 +406,11 @@ private void ReadComments(BufferedReadStream stream)
406
406
GifThrowHelper . ThrowInvalidImageContentException ( $ "Gif comment length '{ length } ' exceeds max '{ GifConstants . MaxCommentSubBlockLength } ' of a comment data block") ;
407
407
}
408
408
409
+ if ( length == - 1 )
410
+ {
411
+ GifThrowHelper . ThrowInvalidImageContentException ( "Unexpected end of stream while reading gif comment" ) ;
412
+ }
413
+
409
414
if ( this . skipMetadata )
410
415
{
411
416
stream . Seek ( length , SeekOrigin . Current ) ;
Original file line number Diff line number Diff line change @@ -381,4 +381,21 @@ public void Issue2859_LZWPixelStackOverflow<TPixel>(TestImageProvider<TPixel> pr
381
381
image . DebugSaveMultiFrame ( provider ) ;
382
382
image . CompareToReferenceOutputMultiFrame ( provider , ImageComparer . Exact ) ;
383
383
}
384
+
385
+ // https://github.com/SixLabors/ImageSharp/issues/2953
386
+ [ Theory ]
387
+ [ WithFile ( TestImages . Gif . Issues . Issue2953 , PixelTypes . Rgba32 ) ]
388
+ public void Issue2953 < TPixel > ( TestImageProvider < TPixel > provider )
389
+ where TPixel : unmanaged, IPixel < TPixel >
390
+ {
391
+ // We should throw a InvalidImageContentException when trying to identify or load an invalid GIF file.
392
+ TestFile testFile = TestFile . Create ( provider . SourceFileOrDescription ) ;
393
+
394
+ Assert . Throws < InvalidImageContentException > ( ( ) => Image . Identify ( testFile . FullPath ) ) ;
395
+ Assert . Throws < InvalidImageContentException > ( ( ) => Image . Load ( testFile . FullPath ) ) ;
396
+
397
+ DecoderOptions options = new ( ) { SkipMetadata = true } ;
398
+ Assert . Throws < InvalidImageContentException > ( ( ) => Image . Identify ( options , testFile . FullPath ) ) ;
399
+ Assert . Throws < InvalidImageContentException > ( ( ) => Image . Load ( options , testFile . FullPath ) ) ;
400
+ }
384
401
}
Original file line number Diff line number Diff line change @@ -568,6 +568,7 @@ public static class Issues
568
568
public const string Issue2866 = "Gif/issues/issue_2866.gif" ;
569
569
public const string Issue2859_A = "Gif/issues/issue_2859_A.gif" ;
570
570
public const string Issue2859_B = "Gif/issues/issue_2859_B.gif" ;
571
+ public const string Issue2953 = "Gif/issues/issue_2953.gif" ;
571
572
}
572
573
573
574
public static readonly string [ ] Animated =
You can’t perform that action at this time.
0 commit comments