mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-09 20:03:56 +00:00
plugin_fuzz now builds plug-ins whose run executes memory.fill, memory.copy (overlapping ranges included), memory.init followed by data.drop, and data.drop followed by memory.init. Lengths and offsets are sampled at zero, small, page and mebibyte sizes, at an exact end, one before and one past it, with copy sources and destinations and init memory and segment offsets chosen separately. Fill and copy can repeat up to about one fuel slice of copying. Each case runs directly under the default budget, a small fixed budget or one near its estimated cost. A run must trap exactly when a range leaves memory or the data segment (empty once dropped), and must finish when it is in bounds and has ample fuel; otherwise it may hit the instruction budget. The same plug-in then runs through plugin.run: a failed run leaves the document unchanged and the document still renders and exports. bulk_memory_cases_reach_their_instruction checks that each operation's module contains its instruction and traps on a small out-of-bounds case.