mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-24 09:57:08 -06:00
Embedded PNG and WebP images reached resvg using only their displayed destination area, while resvg/tiny-skia allocate and decode the full intrinsic source image first. A highly compressed large image could therefore trigger gigabyte-scale allocation and decompression outside the importer's destination-memory accounting. Wrap usvg's default image-href data resolver with a check that reads PNG dimensions directly from the IHDR chunk and WebP dimensions via photocraft_codecs::probe_size, rejecting images whose decoded RGBA size exceeds the raster budget before resvg ever sees them. Findings: - f4fc2a9e-c26f-442d-9d05-4e793d6b0f13 (CWE-789, embedded WebP allocation) - d765fad5-678e-4f15-a8f8-3e6ee086056a (CWE-789, embedded PNG allocation)