X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=fuzz%2Ffuzz_targets%2Ffull_stack_target.rs;h=354625604c1e13cc5eacd6dc7cda286de635057a;hb=7e59e1e3927f3baf586bc393bdd519449eaed08b;hp=19b3e843ae6706c7ef99d095b76b0c736b8a22c5;hpb=a0be4d1758811d0ee17e092cb8b5496f4baffbec;p=rust-lightning diff --git a/fuzz/fuzz_targets/full_stack_target.rs b/fuzz/fuzz_targets/full_stack_target.rs index 19b3e843..35462560 100644 --- a/fuzz/fuzz_targets/full_stack_target.rs +++ b/fuzz/fuzz_targets/full_stack_target.rs @@ -7,9 +7,9 @@ use bitcoin::blockdata::block::BlockHeader; use bitcoin::blockdata::transaction::{Transaction, TxOut}; use bitcoin::blockdata::script::{Builder, Script}; use bitcoin::blockdata::opcodes; +use bitcoin::consensus::encode::{deserialize, serialize}; use bitcoin::network::constants::Network; -use bitcoin::network::serialize::{deserialize, serialize, BitcoinHash}; -use bitcoin::util::hash::{Sha256dHash, Hash160}; +use bitcoin::util::hash::{BitcoinHash, Sha256dHash, Hash160}; use crypto::digest::Digest; @@ -21,7 +21,7 @@ use lightning::ln::channelmanager::{ChannelManager, PaymentFailReason}; 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::{reset_rng_state, fill_bytes}; use lightning::util::logger::Logger; use lightning::util::sha2::Sha256; use lightning::util::config::UserConfig; @@ -168,7 +168,7 @@ impl<'a> MoneyLossDetector<'a> { let mut txn = Vec::with_capacity(all_txn.len()); let mut txn_idxs = Vec::with_capacity(all_txn.len()); for (idx, tx) in all_txn.iter().enumerate() { - let txid = Sha256dHash::from_data(&serialize(tx).unwrap()[..]); + let txid = tx.txid(); match self.txids_confirmed.entry(txid) { hash_map::Entry::Vacant(e) => { e.insert(self.height); @@ -209,15 +209,17 @@ impl<'a> MoneyLossDetector<'a> { impl<'a> Drop for MoneyLossDetector<'a> { fn drop(&mut self) { - // Disconnect all peers - for (idx, peer) in self.peers.borrow().iter().enumerate() { - if *peer { - self.handler.disconnect_event(&Peer{id: idx as u8, peers_connected: &self.peers}); + if !::std::thread::panicking() { + // Disconnect all peers + for (idx, peer) in self.peers.borrow().iter().enumerate() { + if *peer { + self.handler.disconnect_event(&Peer{id: idx as u8, peers_connected: &self.peers}); + } } - } - // Force all channels onto the chain (and time out claim txn) - self.manager.force_close_all_channels(); + // Force all channels onto the chain (and time out claim txn) + self.manager.force_close_all_channels(); + } } } @@ -263,6 +265,12 @@ impl KeysInterface for KeyProvider { } } } + + fn get_session_key(&self) -> SecretKey { + let mut session_key = [0; 32]; + fill_bytes(&mut session_key); + SecretKey::from_slice(&Secp256k1::without_caps(), &session_key).unwrap() + } } #[inline] @@ -430,7 +438,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { value: funding_generation.1, script_pubkey: funding_generation.2, }] }; let funding_output = 'search_loop: loop { - let funding_txid = Sha256dHash::from_data(&serialize(&tx).unwrap()[..]); + let funding_txid = tx.txid(); if let None = loss_detector.txids_confirmed.get(&funding_txid) { let outpoint = OutPoint::new(funding_txid, 0); for chan in channelmanager.list_channels() {