Skip to content

Commit e0fad3f

Browse files
authored
Merge pull request #185 from TheBlueMatt/2018-09-ser-rework
Serialization Framework Tweaks
2 parents 97488ad + 8a7dd2f commit e0fad3f

34 files changed

+355
-251
lines changed

fuzz/fuzz_targets/channel_target.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use lightning::chain::chaininterface::{FeeEstimator, ConfirmationTarget};
1515
use lightning::chain::transaction::OutPoint;
1616
use lightning::util::reset_rng_state;
1717
use lightning::util::logger::Logger;
18-
use lightning::util::ser::{Readable, Reader};
18+
use lightning::util::ser::Readable;
1919

2020
mod utils;
2121

@@ -121,7 +121,7 @@ pub fn do_test(data: &[u8]) {
121121

122122
macro_rules! decode_msg {
123123
($MsgType: path, $len: expr) => {{
124-
let mut reader = Reader::new(::std::io::Cursor::new(get_slice!($len)));
124+
let mut reader = ::std::io::Cursor::new(get_slice!($len));
125125
match <($MsgType)>::read(&mut reader) {
126126
Ok(msg) => msg,
127127
Err(e) => match e {

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: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
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) => {
619
{
7-
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
8-
let mut r = Reader::new(::std::io::Cursor::new($data));
20+
use lightning::util::ser::{Writeable, Readable};
21+
let mut r = ::std::io::Cursor::new($data);
922
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![]));
23+
let p = r.position() as usize;
24+
let mut w = VecWriter(Vec::new());
1225
msg.write(&mut w).unwrap();
1326

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]);
27+
assert_eq!(w.0.len(), p);
28+
assert_eq!(&r.into_inner()[..p], &w.0[..p]);
1729
}
1830
}
1931
}
@@ -23,10 +35,11 @@ macro_rules! test_msg {
2335
macro_rules! test_msg_simple {
2436
($MsgType: path, $data: ident) => {
2537
{
26-
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
27-
let mut r = Reader::new(::std::io::Cursor::new($data));
38+
use lightning::util::ser::{Writeable, Readable};
39+
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 Writer::new(::std::io::Cursor::new(vec![]))).unwrap();
41+
let mut w = VecWriter(Vec::new());
42+
msg.write(&mut w).unwrap();
3043
}
3144
}
3245
}
@@ -36,14 +49,13 @@ macro_rules! test_msg_simple {
3649
macro_rules! test_msg_exact {
3750
($MsgType: path, $data: ident) => {
3851
{
39-
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
40-
let mut r = Reader::new(::std::io::Cursor::new($data));
52+
use lightning::util::ser::{Writeable, Readable};
53+
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 = Writer::new(::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().into_inner();
46-
assert_eq!(&r.into_inner().into_inner()[..], &buf[..]);
58+
assert_eq!(&r.into_inner()[..], &w.0[..]);
4759
}
4860
}
4961
}
@@ -53,17 +65,16 @@ macro_rules! test_msg_exact {
5365
macro_rules! test_msg_hole {
5466
($MsgType: path, $data: ident, $hole: expr, $hole_len: expr) => {
5567
{
56-
use lightning::util::ser::{Writer, Reader, Writeable, Readable};
57-
let mut r = Reader::new(::std::io::Cursor::new($data));
68+
use lightning::util::ser::{Writeable, Readable};
69+
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 = Writer::new(::std::io::Cursor::new(vec![]));
71+
let mut w = VecWriter(Vec::new());
6072
msg.write(&mut w).unwrap();
61-
let p = w.get_ref().position() as usize;
73+
let p = w.0.len() as usize;
6274

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..]);
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
}

fuzz/fuzz_targets/router_target.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use lightning::ln::msgs::{RoutingMessageHandler};
1212
use lightning::ln::router::{Router, RouteHint};
1313
use lightning::util::reset_rng_state;
1414
use lightning::util::logger::Logger;
15-
use lightning::util::ser::{Reader, Readable};
15+
use lightning::util::ser::Readable;
1616

1717
use secp256k1::key::PublicKey;
1818
use secp256k1::Secp256k1;
@@ -121,7 +121,7 @@ pub fn do_test(data: &[u8]) {
121121

122122
macro_rules! decode_msg {
123123
($MsgType: path, $len: expr) => {{
124-
let mut reader = Reader::new(::std::io::Cursor::new(get_slice!($len)));
124+
let mut reader = ::std::io::Cursor::new(get_slice!($len));
125125
match <($MsgType)>::read(&mut reader) {
126126
Ok(msg) => msg,
127127
Err(e) => match e {

0 commit comments

Comments
 (0)