Image Pipeline Pack

Run the whole pack through your image path. Most of it should convert cleanly; the rest should be rejected with a specific reason. An 8000x8000 image and a 1x1 image are both in here, because limits usually break at one end or the other.

↓ Download image-pipeline-pack.zip17 files · 52.2 KB zipped

SHA-256 ef337de9f5dbec0b521ca653372535de5f75bbf3b5a92e9c6100fa5ff77c4a15

What is inside

FileFormatSizeExpected result
png-1x1.pngPNG70 bytesThe smallest valid PNG. Accepted.
png-8000x8000.pngPNG259 KBRejected by a dimension limit, or decoded without allocating w x h x 4 up front.
png-bad-crc.pngPNG1.3 KBRejected by a strict decoder; displayed by a lenient one. Know which you have.
png-truncated.pngPNG719 bytesRejected. The signature and IHDR are intact.
no-extensionPNG (no extension)183 bytesIdentified as PNG from its bytes.
jpeg-baseline.jpgJPEG2.8 KBBaseline JPEG. Accepted.
fake-jpeg-is-executable.jpgJPEG (spoofed)2.1 KBRejected: the bytes are not a JPEG.
gif-animated.gifGIF2.4 KBAll four frames preserved, or deliberately flattened to the first.
gif-static.gifGIF774 bytesThe single-frame control.
bmp-24bit.bmpBMP48.1 KBAn uncompressed format with a bottom-up row order that catches naive readers.
favicon.icoICO145 bytesA container holding more than one size.
tiff-rgb-le.tifTIFF27.2 KBLittle-endian TIFF, the common case.
tiff-rgb-be.tifTIFF27.2 KBBig-endian TIFF. A reader assuming II misreads every offset in the file.
flat-96x96.webpWEBP32 bytesLossless WEBP. Note the file begins RIFF, like a WAV.
transparent-1x1.webpWEBP32 bytesHalf-opaque alpha, so flattening is visible immediately.
svg-plain.svgSVG303 bytesHarmless vector graphic. The control for the next one.
svg-with-script.svgSVG457 bytesNever served inline from your own origin.
Also in the archive: a README.md repeating this table with full digests, a manifest.json for scripting, and a SHA256SUMS you can check with sha256sum -c. Every file is generated from source, carries no third-party copyright, and is free to redistribute.

Questions

Why are there two TIFF files?

TIFF is the one common image format that can be written in either byte order. One begins II for Intel little-endian, the other MM for Motorola big-endian. A decoder that assumes one of them reads garbage widths and offsets from the other, so both are in the pack.

What does the 8000x8000 PNG test?

Memory allocation before validation. The compressed file is small, but a decoder that allocates width times height times four bytes up front needs roughly 256 MB for it. That is the shape of most image denial-of-service bugs.

Other packs

Upload Torture Test Pack · Filename Compatibility Pack · Encoding and Unicode Pack · Archive and ZIP Security Pack · Document Parser Pack · Structured Data Pack · Email Parser Pack