Skip to content

Commit 19b9244

Browse files
committed
Utilize Writer size hinting in message fuzz targets and check them
1 parent 712051a commit 19b9244

27 files changed

+51
-14
lines changed

fuzz/fuzz_targets/msg_targets/msg_accept_channel_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_announcement_signatures_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_channel_announcement_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_channel_reestablish_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_channel_update_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_closing_signed_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_commitment_signed_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_decoded_onion_error_packet_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_error_message_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_funding_created_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_funding_locked_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_funding_signed_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_init_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_node_announcement_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_onion_hop_data_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_open_channel_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_ping_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_pong_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_revoke_and_ack_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_shutdown_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_target_template.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_update_add_htlc_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_update_fail_htlc_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_update_fail_malformed_htlc_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_update_fee_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/msg_update_fulfill_htlc_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

99
mod utils;
10+
use utils::VecWriter;
1011

1112
#[inline]
1213
pub fn do_test(data: &[u8]) {

fuzz/fuzz_targets/msg_targets/utils.rs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
#![macro_use]
22

3+
use lightning::util::ser::Writer;
4+
pub struct VecWriter(pub Vec<u8>);
5+
impl Writer for VecWriter {
6+
fn write_all(&mut self, buf: &[u8]) -> Result<(), ::std::io::Error> {
7+
assert!(self.0.capacity() >= self.0.len() + buf.len());
8+
self.0.extend_from_slice(buf);
9+
Ok(())
10+
}
11+
fn size_hint(&mut self, size: usize) {
12+
self.0.reserve_exact(size);
13+
}
14+
}
15+
316
#[macro_export]
417
macro_rules! test_msg {
518
($MsgType: path, $data: ident) => {
@@ -8,12 +21,11 @@ macro_rules! test_msg {
821
let mut r = ::std::io::Cursor::new($data);
922
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
1023
let p = r.position() as usize;
11-
let mut w = ::std::io::Cursor::new(vec![]);
24+
let mut w = VecWriter(Vec::new());
1225
msg.write(&mut w).unwrap();
1326

14-
let buf = w.into_inner();
15-
assert_eq!(buf.len(), p);
16-
assert_eq!(&r.into_inner()[..p], &buf[..p]);
27+
assert_eq!(w.0.len(), p);
28+
assert_eq!(&r.into_inner()[..p], &w.0[..p]);
1729
}
1830
}
1931
}
@@ -26,7 +38,8 @@ macro_rules! test_msg_simple {
2638
use lightning::util::ser::{Writeable, Readable};
2739
let mut r = ::std::io::Cursor::new($data);
2840
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
29-
msg.write(&mut ::std::io::Cursor::new(vec![])).unwrap();
41+
let mut w = VecWriter(Vec::new());
42+
msg.write(&mut w).unwrap();
3043
}
3144
}
3245
}
@@ -39,11 +52,10 @@ macro_rules! test_msg_exact {
3952
use lightning::util::ser::{Writeable, Readable};
4053
let mut r = ::std::io::Cursor::new($data);
4154
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
42-
let mut w = ::std::io::Cursor::new(vec![]);
55+
let mut w = VecWriter(Vec::new());
4356
msg.write(&mut w).unwrap();
4457

45-
let buf = w.into_inner();
46-
assert_eq!(&r.into_inner()[..], &buf[..]);
58+
assert_eq!(&r.into_inner()[..], &w.0[..]);
4759
}
4860
}
4961
}
@@ -56,14 +68,13 @@ macro_rules! test_msg_hole {
5668
use lightning::util::ser::{Writeable, Readable};
5769
let mut r = ::std::io::Cursor::new($data);
5870
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
59-
let mut w = ::std::io::Cursor::new(vec![]);
71+
let mut w = VecWriter(Vec::new());
6072
msg.write(&mut w).unwrap();
61-
let p = w.position() as usize;
73+
let p = w.0.len() as usize;
6274

63-
let buf = w.into_inner();
64-
assert_eq!(buf.len(),p);
65-
assert_eq!(&r.get_ref()[..$hole], &buf[..$hole]);
66-
assert_eq!(&r.get_ref()[$hole+$hole_len..p], &buf[$hole+$hole_len..]);
75+
assert_eq!(w.0.len(), p);
76+
assert_eq!(&r.get_ref()[..$hole], &w.0[..$hole]);
77+
assert_eq!(&r.get_ref()[$hole+$hole_len..p], &w.0[$hole+$hole_len..]);
6778
}
6879
}
6980
}

0 commit comments

Comments
 (0)