Skip to content

Commit 4ee0114

Browse files
committed
Ensure we aren't duplicatively reading things in router_target
1 parent 88fac35 commit 4ee0114

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

fuzz/fuzz_targets/router_target.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ impl InputData {
6363
}
6464
Some(&self.data[old_pos..old_pos + len])
6565
}
66+
fn get_slice_nonadvancing(&self, len: usize) -> Option<&[u8]> {
67+
let old_pos = self.read_pos.load(Ordering::Acquire);
68+
if self.data.len() < old_pos + len {
69+
return None;
70+
}
71+
Some(&self.data[old_pos..old_pos + len])
72+
}
6673
}
6774

6875
struct DummyChainWatcher {
@@ -94,23 +101,23 @@ impl ChainWatchInterface for DummyChainWatcher {
94101
pub fn do_test(data: &[u8]) {
95102
reset_rng_state();
96103

97-
let mut read_pos = 0;
104+
let input = Arc::new(InputData {
105+
data: data.to_vec(),
106+
read_pos: AtomicUsize::new(0),
107+
});
98108
macro_rules! get_slice_nonadvancing {
99109
($len: expr) => {
100-
{
101-
if data.len() < read_pos + $len as usize {
102-
return;
103-
}
104-
&data[read_pos..read_pos + $len as usize]
110+
match input.get_slice_nonadvancing($len as usize) {
111+
Some(slice) => slice,
112+
None => return,
105113
}
106114
}
107115
}
108116
macro_rules! get_slice {
109117
($len: expr) => {
110-
{
111-
let res = get_slice_nonadvancing!($len);
112-
read_pos += $len;
113-
res
118+
match input.get_slice($len as usize) {
119+
Some(slice) => slice,
120+
None => return,
114121
}
115122
}
116123
}
@@ -153,12 +160,8 @@ pub fn do_test(data: &[u8]) {
153160
}
154161

155162
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger{});
156-
let input = Arc::new(InputData {
157-
data: data.to_vec(),
158-
read_pos: AtomicUsize::new(0),
159-
});
160163
let chain_monitor = Arc::new(DummyChainWatcher {
161-
input: input,
164+
input: Arc::clone(&input),
162165
});
163166

164167
let our_pubkey = get_pubkey!();

0 commit comments

Comments
 (0)