Browse Source

Zero out the iTxt header

pull/1918/head
Ynse Hoornenborg 4 years ago
parent
commit
c6540799e3
  1. 13
      src/ImageSharp/Formats/Png/PngEncoderCore.cs

13
src/ImageSharp/Formats/Png/PngEncoderCore.cs

@ -680,12 +680,21 @@ namespace SixLabors.ImageSharp.Formats.Png
return;
}
int payloadLength = xmpData.Length + PngConstants.XmpKeyword.Length + 5;
int payloadLength = xmpData.Length + PngConstants.XmpKeyword.Length + iTxtHeaderSize;
using (IMemoryOwner<byte> owner = this.memoryAllocator.Allocate<byte>(payloadLength))
{
Span<byte> payload = owner.GetSpan();
PngConstants.XmpKeyword.CopyTo(payload);
int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize;
int bytesWritten = PngConstants.XmpKeyword.Length;
// Write the iTxt header (all zeros in this case)
payload[bytesWritten++] = 0;
payload[bytesWritten++] = 0;
payload[bytesWritten++] = 0;
payload[bytesWritten++] = 0;
payload[bytesWritten++] = 0;
// And the XMP data itself
xmpData.CopyTo(payload.Slice(bytesWritten));
this.WriteChunk(stream, PngChunkType.InternationalText, payload);
}

Loading…
Cancel
Save