/src/fontations/fuzz/fuzz_targets/fuzz_basic_metadata.rs
Line | Count | Source |
1 | | #![no_main] |
2 | | use std::error::Error; |
3 | | |
4 | | use libfuzzer_sys::fuzz_target; |
5 | | use skrifa::raw::TableProvider; |
6 | | |
7 | | mod helpers; |
8 | | use helpers::*; |
9 | | |
10 | 1.36k | fn do_metadata_things(data: &[u8]) -> Result<(), Box<dyn Error>> { |
11 | 1.36k | let font = select_font(data)?; |
12 | 729 | if let Ok(avar) = font.avar() { |
13 | 219 | let _ = avar.version(); |
14 | 219 | let _ = avar.axis_count(); |
15 | 5.81k | for seg_map in avar.axis_segment_maps().iter().filter_map(Result::ok) { |
16 | 5.81k | let _ = seg_map.position_map_count.get(); |
17 | 5.81k | let _ = seg_map.axis_value_maps(); |
18 | 5.81k | } |
19 | 510 | } |
20 | | |
21 | 729 | if let Ok(os2) = font.os2() { |
22 | 42 | let _ = os2.fs_selection(); |
23 | 42 | let _ = os2.fs_type(); |
24 | 687 | } |
25 | 729 | if let Ok(post) = font.post() { |
26 | 40 | let _ = post.is_fixed_pitch(); |
27 | 689 | } |
28 | | |
29 | 729 | if let Ok(hhea) = font.hhea() { |
30 | 158 | let _ = hhea.number_of_h_metrics(); |
31 | 158 | if let Ok(hmtx) = font.hmtx() { |
32 | 95 | let _ = hmtx.h_metrics().iter().count(); |
33 | 95 | let _ = hmtx.left_side_bearings().iter().count(); |
34 | 95 | } |
35 | 571 | } |
36 | | |
37 | 729 | Ok(()) |
38 | 1.36k | } |
39 | | |
40 | | fuzz_target!(|data: &[u8]| { |
41 | | let _ = do_metadata_things(data); |
42 | | }); |