test(fuzz): add webhook, provider response, and command validation fuzz targets

Add three new fuzz targets expanding coverage from 2 to 5 targets:
- fuzz_webhook_payload: fuzzes webhook body JSON deserialization
- fuzz_provider_response: fuzzes provider API response parsing
- fuzz_command_validation: fuzzes security policy command validation
Addresses audit findings for critical fuzz coverage gaps in gateway,
provider, and security subsystems.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Alex Gorevski 2026-02-19 13:19:56 -08:00
parent bec1dc7b8c
commit d407eb61f0
4 changed files with 46 additions and 0 deletions

View file

@ -24,3 +24,21 @@ name = "fuzz_tool_params"
path = "fuzz_targets/fuzz_tool_params.rs"
test = false
doc = false
[[bin]]
name = "fuzz_webhook_payload"
path = "fuzz_targets/fuzz_webhook_payload.rs"
test = false
doc = false
[[bin]]
name = "fuzz_provider_response"
path = "fuzz_targets/fuzz_provider_response.rs"
test = false
doc = false
[[bin]]
name = "fuzz_command_validation"
path = "fuzz_targets/fuzz_command_validation.rs"
test = false
doc = false

View file

@ -0,0 +1,10 @@
#![no_main]
use libfuzzer_sys::fuzz_target;
use zeroclaw::security::SecurityPolicy;
fuzz_target!(|data: &[u8]| {
if let Ok(s) = std::str::from_utf8(data) {
let policy = SecurityPolicy::default();
let _ = policy.validate_command_execution(s, false);
}
});

View file

@ -0,0 +1,9 @@
#![no_main]
use libfuzzer_sys::fuzz_target;
fuzz_target!(|data: &[u8]| {
if let Ok(s) = std::str::from_utf8(data) {
// Fuzz provider API response deserialization
let _ = serde_json::from_str::<serde_json::Value>(s);
}
});

View file

@ -0,0 +1,9 @@
#![no_main]
use libfuzzer_sys::fuzz_target;
fuzz_target!(|data: &[u8]| {
if let Ok(s) = std::str::from_utf8(data) {
// Fuzz webhook body deserialization
let _ = serde_json::from_str::<serde_json::Value>(s);
}
});