1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#![no_main]
use std::sync::Arc;
use font_kit::handle::Handle;
use font_kit::source::Source;
use font_kit::sources::mem::MemSource;
use libfuzzer_sys::{fuzz_target, Corpus};
fuzz_target!(|data: &[u8]| -> Corpus {
let handle = Handle::Memory {
bytes: Arc::new(data.to_vec()),
font_index: 0,
};
match MemSource::from_fonts([handle.clone()].into_iter()) {
Ok(mut source) => {
let _ = source.all_families();
let _ = source.select_best_match(&[], &font_kit::properties::Properties::new());
let _ = source.select_by_postscript_name("");
let _ = source.as_any();
let _ = source.add_font(handle);
let _ = source.all_families();
let _ = source.select_best_match(&[], &font_kit::properties::Properties::new());
let _ = source.select_by_postscript_name("");
let _ = source.as_any();
Corpus::Keep
}
Err(_e) => {
Corpus::Reject
// eprintln!("Error: {:?}", e);
}
}
});