Commit 962182a
Greg Lamberson
feat(fuzz): add egfx PDU decoder fuzz target
Adds a byte-stream fuzz target for the Display Pipeline Virtual Channel
Extension (MS-RDPEGFX) PDU decoders in `ironrdp-egfx`. Matches the pattern
of the existing six fuzz targets in `fuzz/fuzz_targets/`: the libFuzzer
target dispatches `&[u8]` input to a single oracle function in
`ironrdp-fuzzing::oracles`.
The new oracle `egfx_pdu_decode` exercises:
- `GfxPdu` (umbrella enum covering all 23 EGFX message types)
- `CacheToSurfacePdu` (sole sub-PDU with an independent Decode impl)
- `CapabilitySet`
- `Avc420BitmapStream<'_>` and `Avc444BitmapStream<'_>`
- `QuantQuality`, `Point`, `Color`
`ironrdp-egfx` was the only Core-Tier-by-behavior crate in the workspace
without a dedicated fuzz target, leaving the Core Tier "must be fuzzed"
invariant unsatisfied for graphics-pipeline DVC parsing. EGFX is parsed
both client-side (server-sent frames, capability acks) and server-side
(client-sent capability acks, frame acks); the new target exercises both
paths since it operates at the PDU layer.
Changes:
- Add `ironrdp-egfx` path dependency to `ironrdp-fuzzing/Cargo.toml`
- Add `egfx_pdu_decode` oracle function
- Add `fuzz/fuzz_targets/egfx_pdu_decoding.rs`
- Register the new bin in `fuzz/Cargo.toml`
- Regenerate `fuzz/Cargo.lock` and root `Cargo.lock`
Verification:
- `cargo xtask check fmt | lints | locks | typos | tests` all pass
- `cargo check --manifest-path fuzz/Cargo.toml` builds the new target
- Net diff: +46 lines across 5 files plus 1 new file1 parent df0bf9c commit 962182a
6 files changed
Lines changed: 53 additions & 0 deletions
File tree
- crates/ironrdp-fuzzing
- src/oracles
- fuzz
- fuzz_targets
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
15 | 38 | | |
16 | 39 | | |
17 | 40 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
0 commit comments