vectorcraft/crates/eps/src
dotCooCoo db8b9bb04c EPS: closepath no longer grows the path past its limit
moveto, lineto and curveto check that the current path holds fewer
than 1,048,576 elements before they add one, and they stop the reading
with "a path has too many points" when it is full. closepath added its
element without that check. In an encoded user path, a byte of 255
runs the next operator 223 times. vectorcraft-cli info on a 622-byte
file with one uappend that runs closepath 11,150,000 times peaked at a
memory footprint of 601.9 MiB and reported "the file draws nothing".
The string operator makes strings of up to 4 MiB, and one uappend of
an operator string that long would add about 468 million elements of
56 bytes, about 24 GiB.

closepath now makes the same check before it adds its element, in the
closepath operator and in the ClosePath arm of append_user. On the
file above, the reading now stops with "a path has too many points",
and vectorcraft-cli info peaks at 62.0 MiB. A path below the limit
closes as before.

Tests: a moveto followed by 1,100,000 closepaths, and a uappend that
runs closepath 1,059,250 times, are each read between two squares.
Each reading stops with "a path has too many points" and keeps only
the first square.
2026-10-12 08:19:31 +07:00
..
import EPS: closepath no longer grows the path past its limit 2026-10-12 08:19:31 +07:00
print M4.92: Print to a PostScript file 2026-10-05 17:01:36 +07:00
lib.rs Fix #735: Illustrator EPS and .ai files match their page in Fit to Artwork Bounds and the page check 2026-10-10 06:51:50 +07:00
ps.rs M4.67: TIFF export in RGB, CMYK or grayscale, with LZW, either byte order and the profile 2026-10-05 15:24:29 +07:00
scene.rs Placed documents: the object, drawn exactly and kept as art by every exporter 2026-10-08 12:20:51 -07:00
tests.rs M4.76: EPS export (PostScript Level 2 and 3) with EPS Options, TIFF previews and the document embedded 2026-10-05 13:50:50 +07:00
tiff.rs Fix #234: EPS files from the reference app open 2026-10-07 09:34:27 +07:00