diff --git a/CHANGELOG.md b/CHANGELOG.md index a17da3c5..95d4ad6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.11.6] - 2026-05-30 + +**Patch: encoder is now total under fuzzing (#186).** The `encoder_no_panic` +fuzz target (which runs with an empty corpus) intermittently found pre-existing +panics, making the Fuzz Smoke gate flaky. The remaining root — after the +PC/R15-operand fix in v0.11.4 (#185) — was arithmetic overflow in the ARM32 +branch encoders: `*offset - 2` overflow-panics at `i32::MIN` under +`-Cdebug-assertions`. Now uses `wrapping_sub` (total; identical for any real +branch offset). A 180s sweep then ran **8.8M executions with zero panics**. +Also adds a committed `fuzz/seed_corpus/encoder_no_panic/` (61 inputs) so CI's +60s run starts with coverage rather than exploring cold. The separate +`i64_lowering` fuzz finding (real clobber vs harness false-positive) is tracked +in #188. + +**Falsification statement.** v0.11.6 is wrong if `encoder_no_panic` panics on +any input (the encoder must return Ok or Err, never abort). + ## [0.11.5] - 2026-05-30 **Patch: high-register Thumb CMN (#184).** Closes the last sibling of the #180 diff --git a/Cargo.lock b/Cargo.lock index a83d1941..95d0dd8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1890,14 +1890,14 @@ dependencies = [ [[package]] name = "synth-abi" -version = "0.11.5" +version = "0.11.6" dependencies = [ "synth-wit", ] [[package]] name = "synth-analysis" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "synth-core", @@ -1906,7 +1906,7 @@ dependencies = [ [[package]] name = "synth-backend" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "synth-core", @@ -1916,7 +1916,7 @@ dependencies = [ [[package]] name = "synth-backend-awsm" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "synth-core", @@ -1925,7 +1925,7 @@ dependencies = [ [[package]] name = "synth-backend-riscv" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "proptest", @@ -1937,7 +1937,7 @@ dependencies = [ [[package]] name = "synth-backend-wasker" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "synth-core", @@ -1946,11 +1946,11 @@ dependencies = [ [[package]] name = "synth-cfg" -version = "0.11.5" +version = "0.11.6" [[package]] name = "synth-cli" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "clap", @@ -1972,7 +1972,7 @@ dependencies = [ [[package]] name = "synth-core" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "serde", @@ -1985,7 +1985,7 @@ dependencies = [ [[package]] name = "synth-frontend" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "synth-core", @@ -1999,14 +1999,14 @@ dependencies = [ [[package]] name = "synth-memory" -version = "0.11.5" +version = "0.11.6" dependencies = [ "bitflags", ] [[package]] name = "synth-opt" -version = "0.11.5" +version = "0.11.6" dependencies = [ "criterion", "synth-cfg", @@ -2014,11 +2014,11 @@ dependencies = [ [[package]] name = "synth-qemu" -version = "0.11.5" +version = "0.11.6" [[package]] name = "synth-synthesis" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "proptest", @@ -2033,7 +2033,7 @@ dependencies = [ [[package]] name = "synth-test" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "clap", @@ -2049,7 +2049,7 @@ dependencies = [ [[package]] name = "synth-verify" -version = "0.11.5" +version = "0.11.6" dependencies = [ "anyhow", "chrono", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "synth-wit" -version = "0.11.5" +version = "0.11.6" [[package]] name = "tempfile" diff --git a/Cargo.toml b/Cargo.toml index 6a1418a4..d20a3d58 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ resolver = "2" # semver to publish, so the convention now catches up: workspace # version follows the release tag, bumped pre-tag in the release # checklist. See docs/release-process.md. -version = "0.11.5" +version = "0.11.6" edition = "2024" rust-version = "1.88" authors = ["PulseEngine Team"] diff --git a/MODULE.bazel b/MODULE.bazel index a0904e6a..f96f60bc 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -7,7 +7,7 @@ module( name = "synth", # Kept in lockstep with [workspace.package] version in Cargo.toml. # Both are bumped pre-tag — see docs/release-process.md. - version = "0.11.5", + version = "0.11.6", ) # Bazel dependencies diff --git a/crates/synth-backend-awsm/Cargo.toml b/crates/synth-backend-awsm/Cargo.toml index 81cb8bb8..c8367b57 100644 --- a/crates/synth-backend-awsm/Cargo.toml +++ b/crates/synth-backend-awsm/Cargo.toml @@ -11,6 +11,6 @@ categories.workspace = true description = "aWsm backend integration for the Synth compiler" [dependencies] -synth-core = { path = "../synth-core", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } anyhow.workspace = true thiserror.workspace = true diff --git a/crates/synth-backend-riscv/Cargo.toml b/crates/synth-backend-riscv/Cargo.toml index e44427b2..e9847be9 100644 --- a/crates/synth-backend-riscv/Cargo.toml +++ b/crates/synth-backend-riscv/Cargo.toml @@ -11,8 +11,8 @@ categories.workspace = true description = "RISC-V encoder, ELF builder, PMP allocator, and bare-metal startup for synth" [dependencies] -synth-core = { path = "../synth-core", version = "0.11.5" } -synth-synthesis = { path = "../synth-synthesis", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } +synth-synthesis = { path = "../synth-synthesis", version = "0.11.6" } anyhow.workspace = true thiserror.workspace = true tracing.workspace = true diff --git a/crates/synth-backend-wasker/Cargo.toml b/crates/synth-backend-wasker/Cargo.toml index 8df8f24b..b7953f68 100644 --- a/crates/synth-backend-wasker/Cargo.toml +++ b/crates/synth-backend-wasker/Cargo.toml @@ -11,6 +11,6 @@ categories.workspace = true description = "Wasker backend integration for the Synth compiler" [dependencies] -synth-core = { path = "../synth-core", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } anyhow.workspace = true thiserror.workspace = true diff --git a/crates/synth-backend/Cargo.toml b/crates/synth-backend/Cargo.toml index dbf7083c..c91374fc 100644 --- a/crates/synth-backend/Cargo.toml +++ b/crates/synth-backend/Cargo.toml @@ -15,7 +15,7 @@ default = ["arm-cortex-m"] arm-cortex-m = ["synth-synthesis"] [dependencies] -synth-core = { path = "../synth-core", version = "0.11.5" } -synth-synthesis = { path = "../synth-synthesis", version = "0.11.5", optional = true } +synth-core = { path = "../synth-core", version = "0.11.6" } +synth-synthesis = { path = "../synth-synthesis", version = "0.11.6", optional = true } anyhow.workspace = true thiserror.workspace = true diff --git a/crates/synth-backend/src/arm_encoder.rs b/crates/synth-backend/src/arm_encoder.rs index 4d063bd0..33447c8b 100644 --- a/crates/synth-backend/src/arm_encoder.rs +++ b/crates/synth-backend/src/arm_encoder.rs @@ -485,7 +485,10 @@ impl ArmEncoder { // ARM adds PC+8 to the offset, so we need to adjust: // target = PC + 8 + (offset * 4) // For backward branch of N instructions: offset = -(N + 2) - let adjusted_offset = *offset - 2; // Account for PC+8 + // wrapping_sub keeps the encoder total under fuzzing (#186): an + // extreme i32::MIN offset would otherwise overflow-panic; for any + // real branch offset this is identical to `- 2`. + let adjusted_offset = offset.wrapping_sub(2); // Account for PC+8 let offset_bits = (adjusted_offset as u32) & 0x00FFFFFF; 0xEA000000 | offset_bits } @@ -506,7 +509,8 @@ impl ArmEncoder { Condition::LE => 0xD, }; // B encoding: cond(4) | 1010 | offset(24) - let adjusted_offset = *offset - 2; // Account for PC+8 + // wrapping_sub: total under fuzzing (#186), identical for real offsets. + let adjusted_offset = offset.wrapping_sub(2); // Account for PC+8 let offset_bits = (adjusted_offset as u32) & 0x00FFFFFF; (cond_bits << 28) | 0x0A000000 | offset_bits } diff --git a/crates/synth-cli/Cargo.toml b/crates/synth-cli/Cargo.toml index 357bc2f6..20d3eb15 100644 --- a/crates/synth-cli/Cargo.toml +++ b/crates/synth-cli/Cargo.toml @@ -27,18 +27,18 @@ verify = ["synth-verify"] # Path deps carry `version` so `cargo publish` rewrites them to the # crates.io coordinate. Bumping the workspace version requires # updating these in lockstep — see docs/release-process.md. -synth-core = { path = "../synth-core", version = "0.11.5" } -synth-frontend = { path = "../synth-frontend", version = "0.11.5" } -synth-synthesis = { path = "../synth-synthesis", version = "0.11.5" } -synth-backend = { path = "../synth-backend", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } +synth-frontend = { path = "../synth-frontend", version = "0.11.6" } +synth-synthesis = { path = "../synth-synthesis", version = "0.11.6" } +synth-backend = { path = "../synth-backend", version = "0.11.6" } # Optional external backends -synth-backend-awsm = { path = "../synth-backend-awsm", version = "0.11.5", optional = true } -synth-backend-wasker = { path = "../synth-backend-wasker", version = "0.11.5", optional = true } -synth-backend-riscv = { path = "../synth-backend-riscv", version = "0.11.5", optional = true } +synth-backend-awsm = { path = "../synth-backend-awsm", version = "0.11.6", optional = true } +synth-backend-wasker = { path = "../synth-backend-wasker", version = "0.11.6", optional = true } +synth-backend-riscv = { path = "../synth-backend-riscv", version = "0.11.6", optional = true } # Optional verification (requires z3) -synth-verify = { path = "../synth-verify", version = "0.11.5", optional = true, features = ["z3-solver", "arm"] } +synth-verify = { path = "../synth-verify", version = "0.11.6", optional = true, features = ["z3-solver", "arm"] } # Optional PulseEngine WASM optimizer # Uncomment when loom crate is available: diff --git a/crates/synth-frontend/Cargo.toml b/crates/synth-frontend/Cargo.toml index 394d7020..c42396ea 100644 --- a/crates/synth-frontend/Cargo.toml +++ b/crates/synth-frontend/Cargo.toml @@ -14,7 +14,7 @@ description = "WASM/WAT parser and module decoder frontend for the Synth compile # Internal path deps carry an explicit version so `cargo publish` # can rewrite to the crates.io coordinate. `path` is used for # in-workspace builds; `version` is what crates.io sees. -synth-core = { path = "../synth-core", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } wasmparser.workspace = true wasm-encoder.workspace = true diff --git a/crates/synth-opt/Cargo.toml b/crates/synth-opt/Cargo.toml index 3c8a965e..c103352e 100644 --- a/crates/synth-opt/Cargo.toml +++ b/crates/synth-opt/Cargo.toml @@ -11,7 +11,7 @@ categories.workspace = true description = "Peephole optimization passes for the Synth compiler" [dependencies] -synth-cfg = { path = "../synth-cfg", version = "0.11.5" } +synth-cfg = { path = "../synth-cfg", version = "0.11.6" } [dev-dependencies] criterion = { version = "0.5", features = ["html_reports"] } diff --git a/crates/synth-synthesis/Cargo.toml b/crates/synth-synthesis/Cargo.toml index 6d8299b9..2775fcd3 100644 --- a/crates/synth-synthesis/Cargo.toml +++ b/crates/synth-synthesis/Cargo.toml @@ -11,9 +11,9 @@ categories.workspace = true description = "WASM-to-ARM instruction selection and peephole optimizer" [dependencies] -synth-core = { path = "../synth-core", version = "0.11.5" } -synth-cfg = { path = "../synth-cfg", version = "0.11.5" } -synth-opt = { path = "../synth-opt", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } +synth-cfg = { path = "../synth-cfg", version = "0.11.6" } +synth-opt = { path = "../synth-opt", version = "0.11.6" } serde.workspace = true anyhow.workspace = true thiserror.workspace = true diff --git a/crates/synth-verify/Cargo.toml b/crates/synth-verify/Cargo.toml index 800be3b5..335b8eb7 100644 --- a/crates/synth-verify/Cargo.toml +++ b/crates/synth-verify/Cargo.toml @@ -17,12 +17,12 @@ arm = ["synth-synthesis"] [dependencies] # Core dependencies (always required) -synth-core = { path = "../synth-core", version = "0.11.5" } -synth-cfg = { path = "../synth-cfg", version = "0.11.5" } -synth-opt = { path = "../synth-opt", version = "0.11.5" } +synth-core = { path = "../synth-core", version = "0.11.6" } +synth-cfg = { path = "../synth-cfg", version = "0.11.6" } +synth-opt = { path = "../synth-opt", version = "0.11.6" } # ARM synthesis (optional, behind 'arm' feature) -synth-synthesis = { path = "../synth-synthesis", version = "0.11.5", optional = true } +synth-synthesis = { path = "../synth-synthesis", version = "0.11.6", optional = true } # SMT solver for formal verification z3 = { version = "0.19", features = ["static-link-z3"], optional = true } diff --git a/fuzz/seed_corpus/encoder_no_panic/01c741ba81c2d32306209efa6baa405e03eb5591 b/fuzz/seed_corpus/encoder_no_panic/01c741ba81c2d32306209efa6baa405e03eb5591 new file mode 100644 index 00000000..9a43be5d --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/01c741ba81c2d32306209efa6baa405e03eb5591 @@ -0,0 +1 @@ +²ž……ÿ:—°){Ú \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/02add85966e163e9ec185d01b099d0a55334ea22 b/fuzz/seed_corpus/encoder_no_panic/02add85966e163e9ec185d01b099d0a55334ea22 new file mode 100644 index 00000000..e04f49b4 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/02add85966e163e9ec185d01b099d0a55334ea22 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/052dad37bf2691484e958f186415201f6aa4ee94 b/fuzz/seed_corpus/encoder_no_panic/052dad37bf2691484e958f186415201f6aa4ee94 new file mode 100644 index 00000000..2542b22c Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/052dad37bf2691484e958f186415201f6aa4ee94 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/066eabbe40d192a98ac65f7640342f80a7fb2699 b/fuzz/seed_corpus/encoder_no_panic/066eabbe40d192a98ac65f7640342f80a7fb2699 new file mode 100644 index 00000000..f62380fb Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/066eabbe40d192a98ac65f7640342f80a7fb2699 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/0791b23945775913a5508774fb82841830dc669e b/fuzz/seed_corpus/encoder_no_panic/0791b23945775913a5508774fb82841830dc669e new file mode 100644 index 00000000..7138a54b --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/0791b23945775913a5508774fb82841830dc669e @@ -0,0 +1 @@ +ååååž²/… \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/07c3913c546286214520bd2e42691c793436f18f b/fuzz/seed_corpus/encoder_no_panic/07c3913c546286214520bd2e42691c793436f18f new file mode 100644 index 00000000..55594eda Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/07c3913c546286214520bd2e42691c793436f18f differ diff --git a/fuzz/seed_corpus/encoder_no_panic/081a842db41d140c3ff4e6daa2ea11c5b9a4f5b7 b/fuzz/seed_corpus/encoder_no_panic/081a842db41d140c3ff4e6daa2ea11c5b9a4f5b7 new file mode 100644 index 00000000..2801c8c3 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/081a842db41d140c3ff4e6daa2ea11c5b9a4f5b7 @@ -0,0 +1 @@ +²„ß \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/0853e9e5070d5843ebf00044946542876166d763 b/fuzz/seed_corpus/encoder_no_panic/0853e9e5070d5843ebf00044946542876166d763 new file mode 100644 index 00000000..939001d7 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/0853e9e5070d5843ebf00044946542876166d763 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/0b461591806c44599fa98f894f0f18a2421d411e b/fuzz/seed_corpus/encoder_no_panic/0b461591806c44599fa98f894f0f18a2421d411e new file mode 100644 index 00000000..448b2e82 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/0b461591806c44599fa98f894f0f18a2421d411e differ diff --git a/fuzz/seed_corpus/encoder_no_panic/0b675bd7193b2f4dd8ac0cc05c294ebfb0749442 b/fuzz/seed_corpus/encoder_no_panic/0b675bd7193b2f4dd8ac0cc05c294ebfb0749442 new file mode 100644 index 00000000..0d80fc36 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/0b675bd7193b2f4dd8ac0cc05c294ebfb0749442 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/0bc1b02a6b29c6510f797f81d466750a13d0de84 b/fuzz/seed_corpus/encoder_no_panic/0bc1b02a6b29c6510f797f81d466750a13d0de84 new file mode 100644 index 00000000..728dcae4 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/0bc1b02a6b29c6510f797f81d466750a13d0de84 @@ -0,0 +1 @@ +¥m…[ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/0cafe265e7162dffdae86864070a35b5f0a62d15 b/fuzz/seed_corpus/encoder_no_panic/0cafe265e7162dffdae86864070a35b5f0a62d15 new file mode 100644 index 00000000..a2cd8457 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/0cafe265e7162dffdae86864070a35b5f0a62d15 @@ -0,0 +1 @@ +Ų \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/10818c881c72d3e45689232ecfc496b0f280eac2 b/fuzz/seed_corpus/encoder_no_panic/10818c881c72d3e45689232ecfc496b0f280eac2 new file mode 100644 index 00000000..9e823d44 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/10818c881c72d3e45689232ecfc496b0f280eac2 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/131976fcf0873018a59051e10617f43ddbc3cfc8 b/fuzz/seed_corpus/encoder_no_panic/131976fcf0873018a59051e10617f43ddbc3cfc8 new file mode 100644 index 00000000..1e3285c4 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/131976fcf0873018a59051e10617f43ddbc3cfc8 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/14ef6485e27b9cd15f2739ff84e0a703fba45a36 b/fuzz/seed_corpus/encoder_no_panic/14ef6485e27b9cd15f2739ff84e0a703fba45a36 new file mode 100644 index 00000000..1665fd86 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/14ef6485e27b9cd15f2739ff84e0a703fba45a36 @@ -0,0 +1 @@ +? ~[ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/1741a36e456a500d864a7085274edd384e7ae867 b/fuzz/seed_corpus/encoder_no_panic/1741a36e456a500d864a7085274edd384e7ae867 new file mode 100644 index 00000000..14863cf5 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/1741a36e456a500d864a7085274edd384e7ae867 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/17d352983614115317535d667afc520f9e37ef8d b/fuzz/seed_corpus/encoder_no_panic/17d352983614115317535d667afc520f9e37ef8d new file mode 100644 index 00000000..11a9edf6 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/17d352983614115317535d667afc520f9e37ef8d @@ -0,0 +1 @@ +’Ý’¡ÿÿÿÿÿÿmÑ…… \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/17db3ed51d15aa8409c14b1f3fb0cc19799a2d8d b/fuzz/seed_corpus/encoder_no_panic/17db3ed51d15aa8409c14b1f3fb0cc19799a2d8d new file mode 100644 index 00000000..74ed920c Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/17db3ed51d15aa8409c14b1f3fb0cc19799a2d8d differ diff --git a/fuzz/seed_corpus/encoder_no_panic/18b240089eebb313fde6a83167306e5e416d407c b/fuzz/seed_corpus/encoder_no_panic/18b240089eebb313fde6a83167306e5e416d407c new file mode 100644 index 00000000..05a25556 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/18b240089eebb313fde6a83167306e5e416d407c differ diff --git a/fuzz/seed_corpus/encoder_no_panic/1b5c77aa1696d37306789e0ff5aad2b1b3c5ff5f b/fuzz/seed_corpus/encoder_no_panic/1b5c77aa1696d37306789e0ff5aad2b1b3c5ff5f new file mode 100644 index 00000000..6b2ee8aa Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/1b5c77aa1696d37306789e0ff5aad2b1b3c5ff5f differ diff --git a/fuzz/seed_corpus/encoder_no_panic/1b7dac994fa401f3cadd8bc4f61ee9b83a99040a b/fuzz/seed_corpus/encoder_no_panic/1b7dac994fa401f3cadd8bc4f61ee9b83a99040a new file mode 100644 index 00000000..6c83014a Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/1b7dac994fa401f3cadd8bc4f61ee9b83a99040a differ diff --git a/fuzz/seed_corpus/encoder_no_panic/1c4c843d518816cc22a46c73ba753206e76c9f29 b/fuzz/seed_corpus/encoder_no_panic/1c4c843d518816cc22a46c73ba753206e76c9f29 new file mode 100644 index 00000000..5b098042 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/1c4c843d518816cc22a46c73ba753206e76c9f29 @@ -0,0 +1 @@ +²¢€¹m¹¹Ä \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/1cebbaaa4e37106bd19668d7a456d994354deb09 b/fuzz/seed_corpus/encoder_no_panic/1cebbaaa4e37106bd19668d7a456d994354deb09 new file mode 100644 index 00000000..95ec1ada Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/1cebbaaa4e37106bd19668d7a456d994354deb09 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/1dc0d443ae1a80c28099dd9f6b8d0b3f5e356648 b/fuzz/seed_corpus/encoder_no_panic/1dc0d443ae1a80c28099dd9f6b8d0b3f5e356648 new file mode 100644 index 00000000..0cd28866 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/1dc0d443ae1a80c28099dd9f6b8d0b3f5e356648 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/202e560da5a03075fdd33fd689fc0d59dafce7e7 b/fuzz/seed_corpus/encoder_no_panic/202e560da5a03075fdd33fd689fc0d59dafce7e7 new file mode 100644 index 00000000..e1b43c0e --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/202e560da5a03075fdd33fd689fc0d59dafce7e7 @@ -0,0 +1 @@ +J!UU \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/24559c3f8fdcab9bbb4d5c17e56846b3109da86e b/fuzz/seed_corpus/encoder_no_panic/24559c3f8fdcab9bbb4d5c17e56846b3109da86e new file mode 100644 index 00000000..ad65f2f3 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/24559c3f8fdcab9bbb4d5c17e56846b3109da86e differ diff --git a/fuzz/seed_corpus/encoder_no_panic/24c0604a69f37a9ccd09ca7049d8e749654101bf b/fuzz/seed_corpus/encoder_no_panic/24c0604a69f37a9ccd09ca7049d8e749654101bf new file mode 100644 index 00000000..df995496 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/24c0604a69f37a9ccd09ca7049d8e749654101bf differ diff --git a/fuzz/seed_corpus/encoder_no_panic/25287f127e4c6f29ebf0af167c9e5e2f932a0ac8 b/fuzz/seed_corpus/encoder_no_panic/25287f127e4c6f29ebf0af167c9e5e2f932a0ac8 new file mode 100644 index 00000000..3115c247 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/25287f127e4c6f29ebf0af167c9e5e2f932a0ac8 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/253e7203158c3a04ea752de6f5033c8d6bd049bc b/fuzz/seed_corpus/encoder_no_panic/253e7203158c3a04ea752de6f5033c8d6bd049bc new file mode 100644 index 00000000..2de646c6 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/253e7203158c3a04ea752de6f5033c8d6bd049bc differ diff --git a/fuzz/seed_corpus/encoder_no_panic/255a8d28a5a3a1b7295fc85991671ad6e56a082a b/fuzz/seed_corpus/encoder_no_panic/255a8d28a5a3a1b7295fc85991671ad6e56a082a new file mode 100644 index 00000000..58f4d6dc --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/255a8d28a5a3a1b7295fc85991671ad6e56a082a @@ -0,0 +1 @@ +=—u„ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/29cc576a2977fe3e10959a03a99a60902ca6fb5c b/fuzz/seed_corpus/encoder_no_panic/29cc576a2977fe3e10959a03a99a60902ca6fb5c new file mode 100644 index 00000000..f79db8dc Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/29cc576a2977fe3e10959a03a99a60902ca6fb5c differ diff --git a/fuzz/seed_corpus/encoder_no_panic/2b824e895b59b8124efba191937af919e9a27f65 b/fuzz/seed_corpus/encoder_no_panic/2b824e895b59b8124efba191937af919e9a27f65 new file mode 100644 index 00000000..62d1ed93 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/2b824e895b59b8124efba191937af919e9a27f65 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/2ee4abf4807429ad301734a90560f59bdc4d1aaf b/fuzz/seed_corpus/encoder_no_panic/2ee4abf4807429ad301734a90560f59bdc4d1aaf new file mode 100644 index 00000000..47a5844c Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/2ee4abf4807429ad301734a90560f59bdc4d1aaf differ diff --git a/fuzz/seed_corpus/encoder_no_panic/3028d6765e9ce69c7b8bba72d720e1dcd3c949fc b/fuzz/seed_corpus/encoder_no_panic/3028d6765e9ce69c7b8bba72d720e1dcd3c949fc new file mode 100644 index 00000000..6283574d --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/3028d6765e9ce69c7b8bba72d720e1dcd3c949fc @@ -0,0 +1 @@ +ÑCÑC \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/30a272ecd24b1f22d5a4ef1cd23badddf2d6a9c6 b/fuzz/seed_corpus/encoder_no_panic/30a272ecd24b1f22d5a4ef1cd23badddf2d6a9c6 new file mode 100644 index 00000000..b299469e --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/30a272ecd24b1f22d5a4ef1cd23badddf2d6a9c6 @@ -0,0 +1 @@ +²džë¦�•� \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/313c9a2a05a2746ce02793f287da86dc930795b7 b/fuzz/seed_corpus/encoder_no_panic/313c9a2a05a2746ce02793f287da86dc930795b7 new file mode 100644 index 00000000..a7208ac3 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/313c9a2a05a2746ce02793f287da86dc930795b7 @@ -0,0 +1 @@ +ªªªªªm]ë \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/34b0791056112f4be21b81aa7d9f45e453f59d03 b/fuzz/seed_corpus/encoder_no_panic/34b0791056112f4be21b81aa7d9f45e453f59d03 new file mode 100644 index 00000000..d4833151 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/34b0791056112f4be21b81aa7d9f45e453f59d03 @@ -0,0 +1 @@ +²ž�m \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/3746ca1369fd00c26da61ccca53f67baf0f1643c b/fuzz/seed_corpus/encoder_no_panic/3746ca1369fd00c26da61ccca53f67baf0f1643c new file mode 100644 index 00000000..5a4a4e63 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/3746ca1369fd00c26da61ccca53f67baf0f1643c differ diff --git a/fuzz/seed_corpus/encoder_no_panic/3bcaf23a06efe0140e44d824cce914d1a3cfa964 b/fuzz/seed_corpus/encoder_no_panic/3bcaf23a06efe0140e44d824cce914d1a3cfa964 new file mode 100644 index 00000000..547fd212 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/3bcaf23a06efe0140e44d824cce914d1a3cfa964 @@ -0,0 +1 @@ +²žüzyÿûÇ0ÿ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/3bd005362358fff28598c33620bdde7484dbfa8d b/fuzz/seed_corpus/encoder_no_panic/3bd005362358fff28598c33620bdde7484dbfa8d new file mode 100644 index 00000000..340250c3 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/3bd005362358fff28598c33620bdde7484dbfa8d @@ -0,0 +1 @@ +²mžë \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/3db8941d633cc403ca792421e263ff5bcf532475 b/fuzz/seed_corpus/encoder_no_panic/3db8941d633cc403ca792421e263ff5bcf532475 new file mode 100644 index 00000000..dbcb0aa7 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/3db8941d633cc403ca792421e263ff5bcf532475 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/3ef1a93d0d4c23589ffceee21a40bc35349074c0 b/fuzz/seed_corpus/encoder_no_panic/3ef1a93d0d4c23589ffceee21a40bc35349074c0 new file mode 100644 index 00000000..8a0881ec Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/3ef1a93d0d4c23589ffceee21a40bc35349074c0 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/400e51b53c425764b51ff3cb8c4b0de0e9941048 b/fuzz/seed_corpus/encoder_no_panic/400e51b53c425764b51ff3cb8c4b0de0e9941048 new file mode 100644 index 00000000..e779633c --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/400e51b53c425764b51ff3cb8c4b0de0e9941048 @@ -0,0 +1 @@ +­ÚÚÚ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/435b787be376b9a08e8685b32c877155e60f2a58 b/fuzz/seed_corpus/encoder_no_panic/435b787be376b9a08e8685b32c877155e60f2a58 new file mode 100644 index 00000000..dd8310b9 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/435b787be376b9a08e8685b32c877155e60f2a58 @@ -0,0 +1 @@ +²~Z÷zlC… \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/44441084198569fd0a880748c5c7421befb2849e b/fuzz/seed_corpus/encoder_no_panic/44441084198569fd0a880748c5c7421befb2849e new file mode 100644 index 00000000..f5d2ae3a --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/44441084198569fd0a880748c5c7421befb2849e @@ -0,0 +1 @@ +²…žåv/å \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/458b8e5c96eb8c6671bac0c4366cc45940f74619 b/fuzz/seed_corpus/encoder_no_panic/458b8e5c96eb8c6671bac0c4366cc45940f74619 new file mode 100644 index 00000000..9c09c870 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/458b8e5c96eb8c6671bac0c4366cc45940f74619 @@ -0,0 +1 @@ +²~j聾“¼ö \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/46bd250f94d752c9051864659bdc01dece5edf3b b/fuzz/seed_corpus/encoder_no_panic/46bd250f94d752c9051864659bdc01dece5edf3b new file mode 100644 index 00000000..ca95df07 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/46bd250f94d752c9051864659bdc01dece5edf3b @@ -0,0 +1 @@ +—= \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/4ba2aa576b90e56125a117c13ed70398e5118294 b/fuzz/seed_corpus/encoder_no_panic/4ba2aa576b90e56125a117c13ed70398e5118294 new file mode 100644 index 00000000..08fc61d9 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/4ba2aa576b90e56125a117c13ed70398e5118294 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/4d22e9d694e2d0a1acc8ee4c1fb7937e77efa629 b/fuzz/seed_corpus/encoder_no_panic/4d22e9d694e2d0a1acc8ee4c1fb7937e77efa629 new file mode 100644 index 00000000..508f1844 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/4d22e9d694e2d0a1acc8ee4c1fb7937e77efa629 @@ -0,0 +1 @@ +—²—²„— \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/4dc7ef76e0e48c3b7cceaf5b04b9203869ff1dd7 b/fuzz/seed_corpus/encoder_no_panic/4dc7ef76e0e48c3b7cceaf5b04b9203869ff1dd7 new file mode 100644 index 00000000..7dff3b47 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/4dc7ef76e0e48c3b7cceaf5b04b9203869ff1dd7 @@ -0,0 +1 @@ +²~聾“¼÷z \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/4e72aac8be2644efebe6ecf5a91a87d6d93d08d3 b/fuzz/seed_corpus/encoder_no_panic/4e72aac8be2644efebe6ecf5a91a87d6d93d08d3 new file mode 100644 index 00000000..0ebc96ef --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/4e72aac8be2644efebe6ecf5a91a87d6d93d08d3 @@ -0,0 +1 @@ +²m!!!!!!!!!Të„ß \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/51f956cbe74b1e500cc095c14e617d9e21a920b4 b/fuzz/seed_corpus/encoder_no_panic/51f956cbe74b1e500cc095c14e617d9e21a920b4 new file mode 100644 index 00000000..231475d0 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/51f956cbe74b1e500cc095c14e617d9e21a920b4 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/533c6bd6befea59c033a89a8a5ae19620465782f b/fuzz/seed_corpus/encoder_no_panic/533c6bd6befea59c033a89a8a5ae19620465782f new file mode 100644 index 00000000..8371d761 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/533c6bd6befea59c033a89a8a5ae19620465782f differ diff --git a/fuzz/seed_corpus/encoder_no_panic/541b214d1dfd857c43c369be219d737e14952959 b/fuzz/seed_corpus/encoder_no_panic/541b214d1dfd857c43c369be219d737e14952959 new file mode 100644 index 00000000..c2c176b5 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/541b214d1dfd857c43c369be219d737e14952959 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/569c22086c5f12d8f11ae01b34c0ab9179ab2041 b/fuzz/seed_corpus/encoder_no_panic/569c22086c5f12d8f11ae01b34c0ab9179ab2041 new file mode 100644 index 00000000..59c612da Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/569c22086c5f12d8f11ae01b34c0ab9179ab2041 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/57e14966ca349f809f09d8ff5d647ef4a51cb5b1 b/fuzz/seed_corpus/encoder_no_panic/57e14966ca349f809f09d8ff5d647ef4a51cb5b1 new file mode 100644 index 00000000..b90a35da --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/57e14966ca349f809f09d8ff5d647ef4a51cb5b1 @@ -0,0 +1 @@ +Ñ \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/5a8b55ec142de064d8427e5a731fb1df533f8632 b/fuzz/seed_corpus/encoder_no_panic/5a8b55ec142de064d8427e5a731fb1df533f8632 new file mode 100644 index 00000000..84e26300 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/5a8b55ec142de064d8427e5a731fb1df533f8632 @@ -0,0 +1 @@ +²ž…&…m’…e \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/5b2f745ac2eba22170128e10359d0742f3f0205f b/fuzz/seed_corpus/encoder_no_panic/5b2f745ac2eba22170128e10359d0742f3f0205f new file mode 100644 index 00000000..ed7930e2 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/5b2f745ac2eba22170128e10359d0742f3f0205f @@ -0,0 +1 @@ +&žSŒ=’²…hhh \ No newline at end of file diff --git a/fuzz/seed_corpus/encoder_no_panic/5b6f1437a66b82d7b6f58c7eb738578076516519 b/fuzz/seed_corpus/encoder_no_panic/5b6f1437a66b82d7b6f58c7eb738578076516519 new file mode 100644 index 00000000..c1ecc8ba Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/5b6f1437a66b82d7b6f58c7eb738578076516519 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/5e116bf6f506c1ca0729371024b35c7ad32231c7 b/fuzz/seed_corpus/encoder_no_panic/5e116bf6f506c1ca0729371024b35c7ad32231c7 new file mode 100644 index 00000000..8083cdf5 Binary files /dev/null and b/fuzz/seed_corpus/encoder_no_panic/5e116bf6f506c1ca0729371024b35c7ad32231c7 differ diff --git a/fuzz/seed_corpus/encoder_no_panic/regression-185-pc-reg b/fuzz/seed_corpus/encoder_no_panic/regression-185-pc-reg new file mode 100644 index 00000000..fc644095 --- /dev/null +++ b/fuzz/seed_corpus/encoder_no_panic/regression-185-pc-reg @@ -0,0 +1 @@ +²ž…um…*ü \ No newline at end of file