diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 08578fb..64b211b 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "arbitrary" @@ -29,6 +29,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "hashify" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f208758247e68e239acaa059e72e4ce1f30f2a4b6523f19c1b923d25b7e9cceb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "libfuzzer-sys" version = "0.4.2" @@ -42,9 +53,10 @@ dependencies = [ [[package]] name = "mail-parser" -version = "0.8.0" +version = "0.10.2" dependencies = [ "encoding_rs", + "hashify", ] [[package]] @@ -60,3 +72,38 @@ name = "once_cell" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" diff --git a/fuzz/fuzz_targets/mail_parser.rs b/fuzz/fuzz_targets/mail_parser.rs index ad00fac..c575251 100644 --- a/fuzz/fuzz_targets/mail_parser.rs +++ b/fuzz/fuzz_targets/mail_parser.rs @@ -4,11 +4,7 @@ use libfuzzer_sys::fuzz_target; use mail_parser::{ decoders::{ base64::base64_decode, - charsets::{ - map::charset_decoder, - single_byte::decoder_iso_8859_1, - utf::{decoder_utf16, decoder_utf16_be, decoder_utf16_le, decoder_utf7}, - }, + charsets::map::charset_decoder, hex::decode_hex, html::{add_html_token, html_to_text, text_to_html}, quoted_printable::quoted_printable_decode, @@ -17,7 +13,7 @@ use mail_parser::{ fields::thread::{thread_name, trim_trailing_fwd}, MessageStream, }, - Message, + Message, MessageParser, }; static RFC822_ALPHABET: &[u8] = b"0123456789abcdefghijklm:=- \r\n"; @@ -38,7 +34,7 @@ fuzz_target!(|data: &[u8]| { MessageStream::new(data).parse_raw(); MessageStream::new(data).parse_unstructured(); MessageStream::new(data).parse_content_type(); - MessageStream::new(data).parse_headers(&mut Vec::new()); + MessageStream::new(data).parse_headers(&MessageParser::default(), &mut Vec::new()); MessageStream::new(data).parse_header_name(); MessageStream::new(data).decode_rfc2047(); @@ -68,17 +64,6 @@ fuzz_target!(|data: &[u8]| { decode_hex(data); charset_decoder(data); - for decoder in &[ - decoder_utf7, - decoder_utf16_le, - decoder_utf16_be, - decoder_utf16, - decoder_iso_8859_1, - ] as &[for<'x> fn(&'x [u8]) -> String] - { - decoder(data); - } - // Fuzz the entire library MessageParser::default().parse(data); }