|
|
@ -195,11 +195,6 @@ internal sealed class PngDecoderCore : ImageDecoderCore |
|
|
switch (chunk.Type) |
|
|
switch (chunk.Type) |
|
|
{ |
|
|
{ |
|
|
case PngChunkType.Header: |
|
|
case PngChunkType.Header: |
|
|
if (!Equals(this.header, default(PngHeader))) |
|
|
|
|
|
{ |
|
|
|
|
|
PngThrowHelper.ThrowInvalidHeader(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.ReadHeaderChunk(pngMetadata, chunk.Data.GetSpan()); |
|
|
this.ReadHeaderChunk(pngMetadata, chunk.Data.GetSpan()); |
|
|
break; |
|
|
break; |
|
|
case PngChunkType.AnimationControl: |
|
|
case PngChunkType.AnimationControl: |
|
|
@ -1439,6 +1434,11 @@ internal sealed class PngDecoderCore : ImageDecoderCore |
|
|
/// <param name="data">The <see cref="T:ReadOnlySpan{byte}"/> containing data.</param>
|
|
|
/// <param name="data">The <see cref="T:ReadOnlySpan{byte}"/> containing data.</param>
|
|
|
private void ReadHeaderChunk(PngMetadata pngMetadata, ReadOnlySpan<byte> data) |
|
|
private void ReadHeaderChunk(PngMetadata pngMetadata, ReadOnlySpan<byte> data) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if (!Equals(this.header, default(PngHeader))) |
|
|
|
|
|
{ |
|
|
|
|
|
PngThrowHelper.ThrowInvalidHeader(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
this.header = PngHeader.Parse(data); |
|
|
this.header = PngHeader.Parse(data); |
|
|
|
|
|
|
|
|
this.header.Validate(); |
|
|
this.header.Validate(); |
|
|
|