diff --git a/fuzz/fuzz_targets/client_initial.rs b/fuzz/fuzz_targets/client_initial.rs index 8dbe4747db..a9fb574177 100644 --- a/fuzz/fuzz_targets/client_initial.rs +++ b/fuzz/fuzz_targets/client_initial.rs @@ -27,11 +27,13 @@ fuzz_target!(|data: &[u8]| { let (aead, hp) = initial_aead_and_hp(d_cid, Role::Client); let (_, pn) = remove_header_protection(&hp, header, payload); - let mut payload_enc = Encoder::with_capacity(MIN_INITIAL_PACKET_SIZE); + let mut write_buffer = Vec::with_capacity(MIN_INITIAL_PACKET_SIZE); + let mut payload_enc = Encoder::new_with_buffer(&mut write_buffer); payload_enc.encode(data); // Add fuzzed data. // Make a new header with a 1 byte packet number length. - let mut header_enc = Encoder::new(); + let mut write_buffer = Vec::new(); + let mut header_enc = Encoder::new_with_buffer(&mut write_buffer); header_enc .encode_byte(0xc0) // Initial with 1 byte packet number. .encode_uint(4, Version::default().wire_version()) diff --git a/fuzz/fuzz_targets/server_initial.rs b/fuzz/fuzz_targets/server_initial.rs index 7a7fe9702d..3732d2171f 100644 --- a/fuzz/fuzz_targets/server_initial.rs +++ b/fuzz/fuzz_targets/server_initial.rs @@ -33,11 +33,13 @@ fuzz_target!(|data: &[u8]| { let (aead, hp) = initial_aead_and_hp(d_cid, Role::Server); let (_, pn) = remove_header_protection(&hp, header, payload); - let mut payload_enc = Encoder::with_capacity(MIN_INITIAL_PACKET_SIZE); + let mut write_buffer = Vec::with_capacity(MIN_INITIAL_PACKET_SIZE); + let mut payload_enc = Encoder::new_with_buffer(&mut write_buffer); payload_enc.encode(data); // Add fuzzed data. // Make a new header with a 1 byte packet number length. - let mut header_enc = Encoder::new(); + let mut write_buffer = Vec::new(); + let mut header_enc = Encoder::new_with_buffer(&mut write_buffer); header_enc .encode_byte(0xc0) // Initial with 1 byte packet number. .encode_uint(4, Version::default().wire_version()) diff --git a/neqo-common/src/codec.rs b/neqo-common/src/codec.rs index 64b1699d2e..97367cf6d3 100644 --- a/neqo-common/src/codec.rs +++ b/neqo-common/src/codec.rs @@ -201,6 +201,7 @@ pub struct Encoder<'a> { } impl<'a> Encoder<'a> { + // TODO: Idiomatic would be with_buffer?! pub fn new_with_buffer(buf: &'a mut Vec) -> Self { Self { buf } }