Skip to content

Commit 63cb37d

Browse files
yuntaiTheBlueMatt
authored andcommitted
Add fuzz targets for Writeable messages/migrate fuzz test
1 parent 8947538 commit 63cb37d

29 files changed

+53
-68
lines changed

fuzz/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ path = "fuzz_targets/chanmon_deser_target.rs"
5454
# message fuzz targets
5555
[[bin]]
5656
name = "msg_ping_target"
57-
path = "fuzz_targets/msg_ping_target.rs"
57+
path = "fuzz_targets/msg_targets/msg_ping_target.rs"
5858

5959
[[bin]]
6060
name = "msg_pong_target"
61-
path = "fuzz_targets/msg_pong_target.rs"
61+
path = "fuzz_targets/msg_targets/msg_pong_target.rs"
6262

6363
[[bin]]
6464
name = "msg_error_message_target"

fuzz/fuzz_targets/msg_targets/gen_target.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ GEN_TEST NodeAnnouncement test_msg_exact ""
3131
GEN_TEST UpdateAddHTLC test_msg_hole ", 85, 33"
3232
GEN_TEST ErrorMessage test_msg_hole ", 32, 2"
3333
GEN_TEST OnionHopData test_msg_hole ", 1+8+8+4, 12"
34+
35+
GEN_TEST Ping test_msg_simple ""
36+
GEN_TEST Pong test_msg_simple ""

fuzz/fuzz_targets/msg_targets/msg_accept_channel_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_announcement_signatures_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_channel_announcement_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_channel_reestablish_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_channel_update_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_closing_signed_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_commitment_signed_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_decoded_onion_error_packet_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_error_message_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_funding_created_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_funding_locked_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_funding_signed_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_init_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_node_announcement_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_onion_hop_data_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_open_channel_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_ping_target.rs renamed to fuzz/fuzz_targets/msg_targets/msg_ping_target.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33

44
extern crate lightning;
55

6+
use lightning::ln::msgs;
67
use lightning::util::reset_rng_state;
78

8-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable, Ping};
9+
mod utils;
910

1011
#[inline]
1112
pub fn do_test(data: &[u8]) {
1213
reset_rng_state();
13-
if let Ok(msg) = Ping::decode(data) {
14-
let _ = msg.encode();
15-
}
14+
test_msg_simple!(msgs::Ping, data);
1615
}
1716

1817
#[cfg(feature = "afl")]

fuzz/fuzz_targets/msg_pong_target.rs renamed to fuzz/fuzz_targets/msg_targets/msg_pong_target.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33

44
extern crate lightning;
55

6+
use lightning::ln::msgs;
67
use lightning::util::reset_rng_state;
78

8-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable, Pong};
9+
mod utils;
910

1011
#[inline]
1112
pub fn do_test(data: &[u8]) {
1213
reset_rng_state();
13-
if let Ok(msg) = Pong::decode(data) {
14-
let _ = msg.encode();
15-
}
14+
test_msg_simple!(msgs::Pong, data);
1615
}
1716

1817
#[cfg(feature = "afl")]

fuzz/fuzz_targets/msg_targets/msg_revoke_and_ack_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_shutdown_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_target_template.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_update_add_htlc_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_update_fail_htlc_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_update_fail_malformed_htlc_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_update_fee_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/msg_update_fulfill_htlc_target.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ extern crate lightning;
66
use lightning::ln::msgs;
77
use lightning::util::reset_rng_state;
88

9-
use lightning::ln::msgs::{MsgEncodable, MsgDecodable};
10-
119
mod utils;
1210

1311
#[inline]

fuzz/fuzz_targets/msg_targets/utils.rs

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,29 @@
44
macro_rules! test_msg {
55
($MsgType: path, $data: ident) => {
66
{
7-
if let Ok(msg) = <$MsgType as MsgDecodable>::decode($data){
8-
let enc = msg.encode();
9-
assert_eq!(&$data[..enc.len()], &enc[..]);
7+
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
8+
let mut r = Reader::new(::std::io::Cursor::new($data));
9+
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
10+
let p = r.get_ref().position() as usize;
11+
let mut w = Writer::new(::std::io::Cursor::new(vec![]));
12+
msg.write(&mut w).unwrap();
13+
14+
let buf = w.into_inner().into_inner();
15+
assert_eq!(buf.len(), p);
16+
assert_eq!(&r.into_inner().into_inner()[..p], &buf[..p]);
17+
}
18+
}
19+
}
20+
}
21+
22+
#[macro_export]
23+
macro_rules! test_msg_simple {
24+
($MsgType: path, $data: ident) => {
25+
{
26+
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
27+
let mut r = Reader::new(::std::io::Cursor::new($data));
28+
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
29+
msg.write(&mut Writer::new(::std::io::Cursor::new(vec![]))).unwrap();
1030
}
1131
}
1232
}
@@ -16,9 +36,14 @@ macro_rules! test_msg {
1636
macro_rules! test_msg_exact {
1737
($MsgType: path, $data: ident) => {
1838
{
19-
if let Ok(msg) = <$MsgType as MsgDecodable>::decode($data){
20-
let enc = msg.encode();
21-
assert_eq!(&$data[..], &enc[..]);
39+
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
40+
let mut r = Reader::new(::std::io::Cursor::new($data));
41+
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
42+
let mut w = Writer::new(::std::io::Cursor::new(vec![]));
43+
msg.write(&mut w).unwrap();
44+
45+
let buf = w.into_inner().into_inner();
46+
assert_eq!(&r.into_inner().into_inner()[..], &buf[..]);
2247
}
2348
}
2449
}
@@ -28,10 +53,17 @@ macro_rules! test_msg_exact {
2853
macro_rules! test_msg_hole {
2954
($MsgType: path, $data: ident, $hole: expr, $hole_len: expr) => {
3055
{
31-
if let Ok(msg) = <$MsgType as MsgDecodable>::decode($data){
32-
let enc = msg.encode();
33-
assert_eq!(&$data[..$hole], &enc[..$hole]);
34-
assert_eq!(&$data[$hole + $hole_len..enc.len()], &enc[$hole + $hole_len..]);
56+
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
57+
let mut r = Reader::new(::std::io::Cursor::new($data));
58+
if let Ok(msg) = <$MsgType as Readable<::std::io::Cursor<&[u8]>>>::read(&mut r) {
59+
let mut w = Writer::new(::std::io::Cursor::new(vec![]));
60+
msg.write(&mut w).unwrap();
61+
let p = w.get_ref().position() as usize;
62+
63+
let buf = w.into_inner().into_inner();
64+
assert_eq!(buf.len(),p);
65+
assert_eq!(&r.get_ref().get_ref()[..$hole], &buf[..$hole]);
66+
assert_eq!(&r.get_ref().get_ref()[$hole+$hole_len..p], &buf[$hole+$hole_len..]);
3567
}
3668
}
3769
}

0 commit comments

Comments
 (0)