31 lines · 721 B · Rust
RawDownload
#![no_main] use anyhow::Result;use arbitrary::Arbitrary;use bstr::BStr;use gix_ref::{packed::Buffer, FullNameRef};use libfuzzer_sys::fuzz_target;use std::hint::black_box; #[derive(Debug, Arbitrary)]struct Ctx<'a> {    packed_file_contents: &'a [u8],    name: &'a [u8],} fn fuzz(ctx: Ctx) -> Result<()> {    let buffer = Buffer::from_bytes(ctx.packed_file_contents, gix_hash::Kind::Sha1)?;    _ = black_box(buffer.iter()?.count());     let full_name_ref: &FullNameRef = BStr::new(ctx.name).try_into()?;    let name = full_name_ref.as_partial_name();     _ = black_box(buffer.try_find(name));    _ = black_box(buffer.find(name));     Ok(())} fuzz_target!(|ctx: Ctx| {    _ = black_box(fuzz(ctx));});