File tree Expand file tree Collapse file tree 4 files changed +65
-1
lines changed Expand file tree Collapse file tree 4 files changed +65
-1
lines changed Original file line number Diff line number Diff line change 1-
21target
32corpus
43artifacts
Original file line number Diff line number Diff line change 1+ target
2+ corpus
3+ artifacts
Original file line number Diff line number Diff line change 1+
2+ [package ]
3+ name = " xml5ever-fuzz"
4+ version = " 0.0.0"
5+ authors = [" David Korczynski <david@adalogics.com>" ]
6+ publish = false
7+ edition = " 2018"
8+
9+ [package .metadata ]
10+ cargo-fuzz = true
11+
12+ [dependencies ]
13+ libfuzzer-sys = " 0.4.0"
14+
15+ [dependencies .xml5ever ]
16+ path = " .."
17+
18+ [dependencies .markup5ever_rcdom ]
19+ path = " ../../rcdom/"
20+
21+ # Prevent this from interfering with workspaces
22+ [workspace ]
23+ members = [" ." ]
24+
25+ [[bin ]]
26+ name = " fuzz_document_parse"
27+ path = " fuzz_targets/fuzz_document_parse.rs"
Original file line number Diff line number Diff line change 1+ #![ no_main]
2+ use libfuzzer_sys:: fuzz_target;
3+
4+ use markup5ever_rcdom:: { RcDom , SerializableHandle } ;
5+ use std:: io:: BufReader ;
6+ use xml5ever:: driver:: parse_document;
7+ use xml5ever:: driver:: XmlParseOpts ;
8+ use xml5ever:: serialize:: serialize;
9+ use xml5ever:: tendril:: TendrilSink ;
10+ use xml5ever:: tree_builder:: XmlTreeBuilderOpts ;
11+
12+ // Target inspired by the Rust-Fuzz project
13+ // https://github.com/rust-fuzz/targets
14+ fuzz_target ! ( |data: & [ u8 ] | {
15+ let opts = XmlParseOpts {
16+ tree_builder: XmlTreeBuilderOpts {
17+ ..Default :: default ( )
18+ } ,
19+ ..Default :: default ( )
20+ } ;
21+
22+ let dom = parse_document( RcDom :: default ( ) , opts)
23+ . from_utf8( )
24+ . read_from( & mut BufReader :: new( data) ) ;
25+
26+ let dom = if let Ok ( dom) = dom {
27+ dom
28+ } else {
29+ return ;
30+ } ;
31+
32+ let mut out = std:: io:: sink( ) ;
33+ let document: SerializableHandle = dom. document. into( ) ;
34+ let _ = serialize( & mut out, & document, Default :: default ( ) ) ;
35+ } ) ;
You can’t perform that action at this time.
0 commit comments