Background
The qjson cdylib is a decoder; cargo-fuzz (#63) covers it. But encoding
and materialize live in Lua (qjson/table.lua, surfaced as qjson.encode
/ qjson.materialize) and are unreachable by cargo-fuzz — a different
toolchain with zero shared code.
#71 fixed a stack overflow in the encoder; that class of bug only gets
fuzz coverage through the Lua layer. This issue is the sibling of #63
(decoder-side fuzz).
Goal
Property / fuzz coverage for the Lua encode + roundtrip path:
decode(encode(x)) == x, plus encoder stack-depth safety.
Scope (this issue = one PR)
Notes
Affected files
- Lua-side fuzz / property harness (location TBD by the luzer-vs-busted choice)
Sibling of #63. Relates to #65, #71.
Background
The qjson cdylib is a decoder; cargo-fuzz (#63) covers it. But encoding
and
materializelive in Lua (qjson/table.lua, surfaced asqjson.encode/
qjson.materialize) and are unreachable by cargo-fuzz — a differenttoolchain with zero shared code.
#71 fixed a stack overflow in the encoder; that class of bug only gets
fuzz coverage through the Lua layer. This issue is the sibling of #63
(decoder-side fuzz).
Goal
Property / fuzz coverage for the Lua encode + roundtrip path:
decode(encode(x)) == x, plus encoder stack-depth safety.Scope (this issue = one PR)
property-test approach; pick one.
parse(x)→materialize→encode→ re-parse,assert structural equality.
Notes
sparse arrays); this issue is fuzz / property-based, not fixed cases.
fuzz/crate (different language + toolchain) —which is why it is a separate issue rather than a test: fuzz harness (cargo-fuzz / libFuzzer) #63 checklist item.
Affected files
Sibling of #63. Relates to #65, #71.