fuzz: adopt fuzzing (wave 1) + alkcall 0.8.1 / alktunnels 0.2.1 bumps
Adopt the alk*/fuzzing posture (alkcall 0.8.1 + alktunnels 0.2.1 precedent) before the v0.1 publish — the cheapest moment this crate will ever have for it: - alkcall 0.8.1 + alktunnels 0.2.1: the duplicate-adopt/open fix is directly relevant to this crate's consumer open/adopt paths - fuzz/ workspace (the sibling layout): nightly-pinned subtree, stable fuzz/shared library (corpus replay = the fuzz gate), detached runner, JSON dict, deterministic seed generator; 129 committed seeds - three wave-1 targets over already-pub APIs: datagram_codec (the ASSOCIATE frame codec — the alkcall-fuzz-doc-assigned downstream target), rfc1928_codec (the forked RFC 1928 core's handshake state machines, both protocol directions), params_parse (the wire-stable open-op surface) - one diagnostic: DatagramReader::retained_bytes() (the decoder-state bound's assertion target, the alktunnels retained_bytes() posture) - docs/research/fuzzing.md: the scoped plan + implementation log; AGENTS.md gains the corpus-replay verification line - campaigns: 3 × 10-min detached runs exited 0 (datagram ~1.9M execs, rfc1928 ~2.0M, params ~3.1M; oom/timeout/crash 0/0/0 on all 33 fork jobs per target; coverage saturated on both codec targets). No crate bugs; three harness-model defects found + fixed (2 pre-campaign by corpus replay, 2 campaign-found, crash inputs promoted as seeds 900/ 901): the len==0 well-framed decode partition, the fieldless-struct serde-seq form, the BadAtyp re-frame arm, the short-domain count-walk gate - wave 2 (session_pumps stateful target) deferred to post-0.1 — the byte-level targets carry the attacker-reachable load for the publish Verification: cargo test (15 suites ok, default + all-features), clippy (all-targets + wasm + fuzz/shared), fmt, cargo doc, publish --dry-run, corpus replay 129 seeds green, cargo fuzz build clean. Refs: alkcall docs/research/fuzzing.md (§7.9 posture), alktunnels docs/research/fuzzing.md; docs/research/fuzzing.md (this crate's copy)
This commit is contained in:
1 parent
8af23eeee0
commit
08a3694464
149 files changed
+1822
-5
No files matched your search
@@ -260,6 +260,15 @@ impl DatagramReader {
|
||||
pub fn is_mid_frame(&self) -> bool {
|
||||
self.current.is_some()
|
||||
}
|
||||
|
||||
/// The decoder's retained byte count: the buffered remainder plus
|
||||
/// any in-flight frame's accumulated payload. The fuzz harness's
|
||||
/// bound assertion (`fuzz/shared`'s `datagram_codec` target)
|
||||
/// asserts against this diagnostic (the alktunnels
|
||||
/// `retained_bytes()` posture); it is not a protocol surface.
|
||||
pub fn retained_bytes(&self) -> usize {
|
||||
self.buf.len() + self.current.as_ref().map_or(0, |(_, acc)| acc.len())
|
||||
}
|
||||
}
|
||||
|
||||
/// Decode one frame's inner bytes (`addr + data`, the length prefix
|
||||
|
||||
Reference in new issue
Block a user