• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::fs::{self, DirEntry};
2 use x509_parser::parse_x509_certificate;
3 
4 const ARTIFACTS_DIR: &str = "fuzz/artifacts/fuzzer_script_1";
5 const CORPUS_DIR: &str = "fuzz/corpus/fuzzer_script_1";
6 
7 #[test]
run_all_fuzz_files()8 fn run_all_fuzz_files() {
9     parse_dir(ARTIFACTS_DIR);
10     parse_dir(CORPUS_DIR);
11 }
12 
parse_dir(name: &str)13 fn parse_dir(name: &str) {
14     match fs::read_dir(name) {
15         Ok(dir_entries) => {
16             dir_entries.for_each(|entry| {
17                 let _ = entry.as_ref().map(|e| parse_file(e));
18             });
19         }
20         Err(_) => eprintln!("fuzzer corpus/artifacts not found - ignoring test"),
21     }
22 }
23 
parse_file(entry: &DirEntry) -> std::io::Result<()>24 fn parse_file(entry: &DirEntry) -> std::io::Result<()> {
25     let path = entry.path();
26     // println!("{:?}", entry.path());
27     let data = fs::read(path).unwrap();
28     let _ = parse_x509_certificate(&data);
29     Ok(())
30 }
31 
32 #[test]
33 #[ignore = "placeholder for specific tests"]
run_fuzz_candidate()34 fn run_fuzz_candidate() {
35     const CANDIDATE: &str = "fuzz/corpus/fuzzer_script_1/bd0096a63b9979d64763915a342a59af9dc281fb";
36 
37     let data = fs::read(CANDIDATE).unwrap();
38     let _ = parse_x509_certificate(&data);
39 }
40