1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker pub mod rand; 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker cfg_if::cfg_if! { 8*bb4ee6a4SAndroid Build Coastguard Worker if #[cfg(not(fuzzing))] { 9*bb4ee6a4SAndroid Build Coastguard Worker /// A stub implementation that ensures the fuzzer code can be compiled but does not provide 10*bb4ee6a4SAndroid Build Coastguard Worker /// any fuzzing functionality. 11*bb4ee6a4SAndroid Build Coastguard Worker /// This allows the fuzzer code to be verified in CI without a nightly cargo toolchain. 12*bb4ee6a4SAndroid Build Coastguard Worker #[macro_export] 13*bb4ee6a4SAndroid Build Coastguard Worker macro_rules! fuzz_target { 14*bb4ee6a4SAndroid Build Coastguard Worker (|$bytes:ident| $body:block) => { 15*bb4ee6a4SAndroid Build Coastguard Worker // fuzzers are configured with no_main. To make the binary compile, we manually 16*bb4ee6a4SAndroid Build Coastguard Worker // provide the main function with no_mangle. 17*bb4ee6a4SAndroid Build Coastguard Worker #[no_mangle] 18*bb4ee6a4SAndroid Build Coastguard Worker pub extern fn main($bytes: &[u8]) { 19*bb4ee6a4SAndroid Build Coastguard Worker $body 20*bb4ee6a4SAndroid Build Coastguard Worker } 21*bb4ee6a4SAndroid Build Coastguard Worker }; 22*bb4ee6a4SAndroid Build Coastguard Worker (|$bytes:ident: &[u8]| $body:block) => { 23*bb4ee6a4SAndroid Build Coastguard Worker fuzz_target!(|$bytes| $body); 24*bb4ee6a4SAndroid Build Coastguard Worker }; 25*bb4ee6a4SAndroid Build Coastguard Worker } 26*bb4ee6a4SAndroid Build Coastguard Worker } else { 27*bb4ee6a4SAndroid Build Coastguard Worker pub use libfuzzer_sys::fuzz_target; 28*bb4ee6a4SAndroid Build Coastguard Worker } 29*bb4ee6a4SAndroid Build Coastguard Worker } 30