diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index b9d2bbe..e55d4da 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -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 diff --git a/fuzz/fuzz_targets/fuzz_command_validation.rs b/fuzz/fuzz_targets/fuzz_command_validation.rs new file mode 100644 index 0000000..13cce01 --- /dev/null +++ b/fuzz/fuzz_targets/fuzz_command_validation.rs @@ -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); + } +}); diff --git a/fuzz/fuzz_targets/fuzz_provider_response.rs b/fuzz/fuzz_targets/fuzz_provider_response.rs new file mode 100644 index 0000000..73f895d --- /dev/null +++ b/fuzz/fuzz_targets/fuzz_provider_response.rs @@ -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::(s); + } +}); diff --git a/fuzz/fuzz_targets/fuzz_webhook_payload.rs b/fuzz/fuzz_targets/fuzz_webhook_payload.rs new file mode 100644 index 0000000..1f5b813 --- /dev/null +++ b/fuzz/fuzz_targets/fuzz_webhook_payload.rs @@ -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::(s); + } +});