File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -29,3 +29,9 @@ name = "uri_deserialize_pjuri"
2929path = " fuzz_targets/uri/deserialize_pjuri.rs"
3030doc = false
3131bench = false
32+
33+ [[bin ]]
34+ name = " url_decode_url"
35+ path = " fuzz_targets/url/decode_url.rs"
36+ doc = false
37+ bench = false
Original file line number Diff line number Diff line change 1+ #![ no_main]
2+
3+ use std:: str;
4+
5+ use libfuzzer_sys:: fuzz_target;
6+ // Adjust this path to wherever your Url module lives in your crate.
7+ use payjoin:: Url ;
8+
9+ fn do_test ( data : & [ u8 ] ) {
10+ let Ok ( s) = str:: from_utf8 ( data) else { return } ;
11+
12+ let Ok ( mut url) = Url :: parse ( s) else { return } ;
13+
14+ let _ = url. scheme ( ) ;
15+ let _ = url. has_host ( ) ;
16+ let _ = url. domain ( ) ;
17+ let _ = url. host_str ( ) ;
18+ let _ = url. port ( ) ;
19+ let _ = url. path ( ) ;
20+ let _ = url. query ( ) ;
21+ let _ = url. fragment ( ) ;
22+ let _ = url. as_str ( ) ;
23+ let _ = url. to_string ( ) ;
24+ if let Some ( segs) = url. path_segments ( ) {
25+ let _ = segs. collect :: < Vec < _ > > ( ) ;
26+ }
27+
28+ let raw = url. as_str ( ) . to_owned ( ) ;
29+ if let Ok ( reparsed) = Url :: parse ( & raw ) {
30+ assert_eq ! (
31+ reparsed. as_str( ) ,
32+ raw,
33+ "round-trip mismatch: first={raw:?} second={:?}" ,
34+ reparsed. as_str( )
35+ ) ;
36+ }
37+
38+ url. set_port ( Some ( 8080 ) ) ;
39+ url. set_port ( None ) ;
40+ url. set_fragment ( Some ( "fuzz" ) ) ;
41+ url. set_fragment ( None ) ;
42+ url. set_query ( Some ( "k=v" ) ) ;
43+ url. set_query ( None ) ;
44+ url. query_pairs_mut ( ) . append_pair ( "fuzz_key" , "fuzz_val" ) ;
45+
46+ if let Some ( mut segs) = url. path_segments_mut ( ) {
47+ segs. push ( "fuzz_segment" ) ;
48+ }
49+
50+ let _ = url. join ( "relative/path" ) ;
51+ let _ = url. join ( "/absolute/path" ) ;
52+ let _ = url. join ( "../dotdot" ) ;
53+ let _ = url. join ( "https://other.example.com/new" ) ;
54+ }
55+
56+ fuzz_target ! ( |data| {
57+ do_test( data) ;
58+ } ) ;
You can’t perform that action at this time.
0 commit comments