blob: 0947d3ddf64363324470718ef2f331006fe142db [file] [edit]
// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
pub mod rand;
cfg_if::cfg_if! {
if #[cfg(not(fuzzing))] {
/// A stub implementation that ensures the fuzzer code can be compiled but does not provide
/// any fuzzing functionality.
/// This allows the fuzzer code to be verified in CI without a nightly cargo toolchain.
#[macro_export]
macro_rules! fuzz_target {
(|$bytes:ident| $body:block) => {
// fuzzers are configured with no_main. To make the binary compile, we manually
// provide the main function with no_mangle.
#[no_mangle]
pub extern fn main($bytes: &[u8]) {
$body
}
};
(|$bytes:ident: &[u8]| $body:block) => {
fuzz_target!(|$bytes| $body);
};
}
} else {
pub use libfuzzer_sys::fuzz_target;
}
}