X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=fuzz%2Ffuzz_targets%2Ffull_stack_target.rs;h=6145d003b199f5007c1b563266b30dd0da2f9c1d;hb=56f16eaa4df0de13a59f6524562a8d8a45b6c2ea;hp=8e0977978ff65c5136ffb53c989f33fc1f9295ee;hpb=084ef28708765c0b1ecc041e64a125a7090eeed1;p=rust-lightning diff --git a/fuzz/fuzz_targets/full_stack_target.rs b/fuzz/fuzz_targets/full_stack_target.rs index 8e097797..6145d003 100644 --- a/fuzz/fuzz_targets/full_stack_target.rs +++ b/fuzz/fuzz_targets/full_stack_target.rs @@ -34,7 +34,6 @@ use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor}; use lightning::ln::router::Router; use lightning::util::events::{EventsProvider,Event}; -use lightning::util::reset_rng_state; use lightning::util::logger::Logger; use lightning::util::config::UserConfig; @@ -50,7 +49,7 @@ use std::collections::{HashMap, hash_map}; use std::cmp; use std::hash::Hash; use std::sync::Arc; -use std::sync::atomic::{AtomicU8,AtomicUsize,Ordering}; +use std::sync::atomic::{AtomicU64,AtomicUsize,Ordering}; #[inline] pub fn slice_to_be16(v: &[u8]) -> u16 { @@ -125,9 +124,8 @@ struct Peer<'a> { peers_connected: &'a RefCell<[bool; 256]>, } impl<'a> SocketDescriptor for Peer<'a> { - fn send_data(&mut self, data: &Vec, write_offset: usize, _resume_read: bool) -> usize { - assert!(write_offset < data.len()); - data.len() - write_offset + fn send_data(&mut self, data: &[u8], _resume_read: bool) -> usize { + data.len() } fn disconnect_socket(&mut self) { assert!(self.peers_connected.borrow()[self.id as usize]); @@ -237,7 +235,7 @@ impl<'a> Drop for MoneyLossDetector<'a> { struct KeyProvider { node_secret: SecretKey, - counter: AtomicU8, + counter: AtomicU64, } impl KeysInterface for KeyProvider { fn get_node_secret(&self) -> SecretKey { @@ -257,7 +255,7 @@ impl KeysInterface for KeyProvider { } fn get_channel_keys(&self, inbound: bool) -> ChannelKeys { - let ctr = self.counter.fetch_add(1, Ordering::Relaxed); + let ctr = self.counter.fetch_add(1, Ordering::Relaxed) as u8; if inbound { ChannelKeys { funding_key: SecretKey::from_slice(&[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, ctr]).unwrap(), @@ -280,20 +278,19 @@ impl KeysInterface for KeyProvider { } fn get_session_key(&self) -> SecretKey { - let ctr = self.counter.fetch_add(1, Ordering::Relaxed); + let ctr = self.counter.fetch_add(1, Ordering::Relaxed) as u8; SecretKey::from_slice(&[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, ctr]).unwrap() } fn get_channel_id(&self) -> [u8; 32] { let ctr = self.counter.fetch_add(1, Ordering::Relaxed); - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, ctr] + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (ctr >> 8*7) as u8, (ctr >> 8*6) as u8, (ctr >> 8*5) as u8, (ctr >> 8*4) as u8, (ctr >> 8*3) as u8, (ctr >> 8*2) as u8, (ctr >> 8*1) as u8, 14, (ctr >> 8*0) as u8] } } #[inline] pub fn do_test(data: &[u8], logger: &Arc) { - reset_rng_state(); - let input = Arc::new(InputData { data: data.to_vec(), read_pos: AtomicUsize::new(0), @@ -329,7 +326,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { let broadcast = Arc::new(TestBroadcaster{}); let monitor = channelmonitor::SimpleManyChannelMonitor::new(watch.clone(), broadcast.clone(), Arc::clone(&logger), fee_est.clone()); - let keys_manager = Arc::new(KeyProvider { node_secret: our_network_key.clone(), counter: AtomicU8::new(0) }); + let keys_manager = Arc::new(KeyProvider { node_secret: our_network_key.clone(), counter: AtomicU64::new(0) }); let mut config = UserConfig::new(); config.channel_options.fee_proportional_millionths = slice_to_be32(get_slice!(4)); config.channel_options.announced_channel = get_slice!(1)[0] != 0;