Skip to content

Commit 79ccf65

Browse files
committed
rustfmt
1 parent 482ef26 commit 79ccf65

File tree

2 files changed

+137
-128
lines changed

2 files changed

+137
-128
lines changed

fuzz/src/process_onion_failure.rs

Lines changed: 135 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -5,143 +5,154 @@
55

66
use std::sync::Arc;
77

8-
use bitcoin::{key::Secp256k1, secp256k1::{PublicKey, SecretKey}};
9-
use lightning::{blinded_path::BlindedHop, ln::{channelmanager::{HTLCSource, PaymentId}, msgs::OnionErrorPacket}, routing::router::{BlindedTail, Path, RouteHop, TrampolineHop}, types::features::{ChannelFeatures, Features, NodeFeatures}, util::{logger::Logger, test_utils::TestLogger}};
8+
use bitcoin::{
9+
key::Secp256k1,
10+
secp256k1::{PublicKey, SecretKey},
11+
};
12+
use lightning::{
13+
blinded_path::BlindedHop,
14+
ln::{
15+
channelmanager::{HTLCSource, PaymentId},
16+
msgs::OnionErrorPacket,
17+
},
18+
routing::router::{BlindedTail, Path, RouteHop, TrampolineHop},
19+
types::features::{ChannelFeatures, Features, NodeFeatures},
20+
util::{logger::Logger, test_utils::TestLogger},
21+
};
1022

1123
// Imports that need to be added manually
12-
use crate::{utils::test_logger::{self}};
24+
use crate::utils::test_logger::{self};
1325

1426
/// Actual fuzz test, method signature and name are fixed
1527
fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
1628
let mut read_pos = 0;
17-
macro_rules! get_slice {
18-
($len: expr) => {{
19-
let slice_len = $len as usize;
20-
if data.len() < read_pos + slice_len {
21-
return;
22-
}
23-
read_pos += slice_len;
24-
&data[read_pos - slice_len..read_pos]
25-
}};
26-
}
27-
28-
let secp_ctx = Secp256k1::new();
29-
30-
let logger: Arc<dyn Logger> =
31-
Arc::new(test_logger::TestLogger::new("".to_owned(), out));
32-
33-
macro_rules! get_u64 {
34-
() => {
35-
match get_slice!(8).try_into() {
36-
Ok(val) => u64::from_be_bytes(val),
37-
Err(_) => return,
38-
}
39-
};
40-
}
41-
42-
macro_rules! get_u32 {
43-
() => {
44-
match get_slice!(4).try_into() {
45-
Ok(val) => u32::from_be_bytes(val),
46-
Err(_) => return,
47-
}
48-
};
49-
}
50-
51-
macro_rules! get_bool {
52-
() => {
53-
get_slice!(1)[0] != 0
54-
};
55-
}
56-
57-
macro_rules! get_u8 {
58-
() => {
59-
get_slice!(1)[0]
60-
};
61-
}
62-
63-
let session_priv = match SecretKey::from_slice(get_slice!(32)) {
64-
Ok(val) => val,
65-
Err(_) => return,
29+
macro_rules! get_slice {
30+
($len: expr) => {{
31+
let slice_len = $len as usize;
32+
if data.len() < read_pos + slice_len {
33+
return;
34+
}
35+
read_pos += slice_len;
36+
&data[read_pos - slice_len..read_pos]
37+
}};
38+
}
39+
40+
let secp_ctx = Secp256k1::new();
41+
42+
let logger: Arc<dyn Logger> = Arc::new(test_logger::TestLogger::new("".to_owned(), out));
43+
44+
macro_rules! get_u64 {
45+
() => {
46+
match get_slice!(8).try_into() {
47+
Ok(val) => u64::from_be_bytes(val),
48+
Err(_) => return,
49+
}
6650
};
67-
68-
let payment_id = match get_slice!(32).try_into() {
69-
Ok(val) => PaymentId(val),
70-
Err(_) => return,
51+
}
52+
53+
macro_rules! get_u32 {
54+
() => {
55+
match get_slice!(4).try_into() {
56+
Ok(val) => u32::from_be_bytes(val),
57+
Err(_) => return,
58+
}
7159
};
60+
}
7261

73-
macro_rules! get_pubkey {
74-
() => {
75-
match PublicKey::from_slice(get_slice!(33)) {
76-
Ok(val) => val,
77-
Err(_) => return,
78-
}
79-
};
80-
}
81-
82-
let mut hops = Vec::<RouteHop>::new();
83-
let hop_count = get_slice!(1)[0] as usize;
84-
for i in 0..hop_count {
85-
hops.push(RouteHop {
86-
pubkey: get_pubkey!(),
87-
node_features: NodeFeatures::empty(),
88-
short_channel_id: get_u64!(),
89-
channel_features: ChannelFeatures::empty(),
90-
fee_msat: get_u64!(),
91-
cltv_expiry_delta: get_u32!(),
92-
maybe_announced_channel: get_bool!(),
93-
});
94-
}
95-
96-
let blinded_tail = match get_bool!() {
97-
true => {
98-
let mut trampoline_hops = Vec::<TrampolineHop>::new();
99-
let trampoline_hop_count = get_slice!(1)[0] as usize;
100-
for i in 0..trampoline_hop_count {
101-
trampoline_hops.push(TrampolineHop {
102-
pubkey: get_pubkey!(),
103-
node_features: NodeFeatures::empty(),
104-
fee_msat: get_u64!(),
105-
cltv_expiry_delta: get_u32!(),
106-
});
107-
}
108-
let mut blinded_hops = Vec::<BlindedHop>::new();
109-
let blinded_hop_count = get_slice!(1)[0] as usize;
110-
for i in 0..blinded_hop_count {
111-
blinded_hops.push(BlindedHop {
112-
blinded_node_id: get_pubkey!(),
113-
encrypted_payload: get_slice!(get_u8!()).to_vec(),
114-
});
115-
}
116-
Some(BlindedTail{
117-
trampoline_hops,
118-
hops: blinded_hops,
119-
blinding_point: get_pubkey!(),
120-
excess_final_cltv_expiry_delta: get_u32!(),
121-
final_value_msat: get_u64!(),
122-
})
123-
},
124-
false => None,
62+
macro_rules! get_bool {
63+
() => {
64+
get_slice!(1)[0] != 0
12565
};
66+
}
12667

127-
let path = Path {
128-
hops,
129-
blinded_tail,
68+
macro_rules! get_u8 {
69+
() => {
70+
get_slice!(1)[0]
13071
};
131-
132-
let htlc_source = HTLCSource::OutboundRoute {
133-
path,
134-
session_priv,
135-
first_hop_htlc_msat: get_u64!(),
136-
payment_id,
72+
}
73+
74+
let session_priv = match SecretKey::from_slice(get_slice!(32)) {
75+
Ok(val) => val,
76+
Err(_) => return,
77+
};
78+
79+
let payment_id = match get_slice!(32).try_into() {
80+
Ok(val) => PaymentId(val),
81+
Err(_) => return,
82+
};
83+
84+
macro_rules! get_pubkey {
85+
() => {
86+
match PublicKey::from_slice(get_slice!(33)) {
87+
Ok(val) => val,
88+
Err(_) => return,
89+
}
13790
};
138-
139-
let failure_len = u16::from_be_bytes(get_slice!(2).try_into().unwrap());
140-
let encrypted_packet = OnionErrorPacket { data:
141-
get_slice!(failure_len as u64).into(),
142-
};
143-
144-
lightning::ln::onion_utils::process_onion_failure(&secp_ctx, &logger, &htlc_source, encrypted_packet);
91+
}
92+
93+
let mut hops = Vec::<RouteHop>::new();
94+
let hop_count = get_slice!(1)[0] as usize;
95+
for i in 0..hop_count {
96+
hops.push(RouteHop {
97+
pubkey: get_pubkey!(),
98+
node_features: NodeFeatures::empty(),
99+
short_channel_id: get_u64!(),
100+
channel_features: ChannelFeatures::empty(),
101+
fee_msat: get_u64!(),
102+
cltv_expiry_delta: get_u32!(),
103+
maybe_announced_channel: get_bool!(),
104+
});
105+
}
106+
107+
let blinded_tail = match get_bool!() {
108+
true => {
109+
let mut trampoline_hops = Vec::<TrampolineHop>::new();
110+
let trampoline_hop_count = get_slice!(1)[0] as usize;
111+
for i in 0..trampoline_hop_count {
112+
trampoline_hops.push(TrampolineHop {
113+
pubkey: get_pubkey!(),
114+
node_features: NodeFeatures::empty(),
115+
fee_msat: get_u64!(),
116+
cltv_expiry_delta: get_u32!(),
117+
});
118+
}
119+
let mut blinded_hops = Vec::<BlindedHop>::new();
120+
let blinded_hop_count = get_slice!(1)[0] as usize;
121+
for i in 0..blinded_hop_count {
122+
blinded_hops.push(BlindedHop {
123+
blinded_node_id: get_pubkey!(),
124+
encrypted_payload: get_slice!(get_u8!()).to_vec(),
125+
});
126+
}
127+
Some(BlindedTail {
128+
trampoline_hops,
129+
hops: blinded_hops,
130+
blinding_point: get_pubkey!(),
131+
excess_final_cltv_expiry_delta: get_u32!(),
132+
final_value_msat: get_u64!(),
133+
})
134+
},
135+
false => None,
136+
};
137+
138+
let path = Path { hops, blinded_tail };
139+
140+
let htlc_source = HTLCSource::OutboundRoute {
141+
path,
142+
session_priv,
143+
first_hop_htlc_msat: get_u64!(),
144+
payment_id,
145+
};
146+
147+
let failure_len = u16::from_be_bytes(get_slice!(2).try_into().unwrap());
148+
let encrypted_packet = OnionErrorPacket { data: get_slice!(failure_len as u64).into() };
149+
150+
lightning::ln::onion_utils::process_onion_failure(
151+
&secp_ctx,
152+
&logger,
153+
&htlc_source,
154+
encrypted_packet,
155+
);
145156
}
146157

147158
/// Method that needs to be added manually, {name}_test

lightning/src/ln/onion_utils.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2813,7 +2813,7 @@ mod tests {
28132813

28142814
#[test]
28152815
fn fuzz_decode_onion_failure() {
2816-
let rnd = RandomBytes::new([1;32]);
2816+
let rnd = RandomBytes::new([1; 32]);
28172817
let data = &rnd.get_secure_random_bytes()[..];
28182818

28192819
let mut read_pos = 0;
@@ -2918,9 +2918,7 @@ mod tests {
29182918
};
29192919

29202920
let failure_len = u16::from_be_bytes(get_slice!(2).try_into().unwrap());
2921-
let encrypted_packet = OnionErrorPacket { data:
2922-
get_slice!(failure_len as u64).into(),
2923-
};
2921+
let encrypted_packet = OnionErrorPacket { data: get_slice!(failure_len as u64).into() };
29242922

29252923
process_onion_failure(&secp_ctx, &logger, &htlc_source, encrypted_packet);
29262924
}

0 commit comments

Comments
 (0)