X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=fuzz%2Ffuzz_targets%2Ffull_stack_target.rs;h=f0d21937750cde5bce0515a9980eca2510ecb1a9;hb=refs%2Fheads%2F2019-01-back-fail-privacy;hp=067c73d217e2517c4e2f43c03aaad92895d898d7;hpb=4cc7d5d5274edc2e28ffc5e83228dbcaa4a935bb;p=rust-lightning diff --git a/fuzz/fuzz_targets/full_stack_target.rs b/fuzz/fuzz_targets/full_stack_target.rs index 067c73d2..f0d21937 100644 --- a/fuzz/fuzz_targets/full_stack_target.rs +++ b/fuzz/fuzz_targets/full_stack_target.rs @@ -281,6 +281,29 @@ impl KeysInterface for KeyProvider { fill_bytes(&mut session_key); SecretKey::from_slice(&session_key).unwrap() } + + fn get_channel_id(&self) -> [u8; 32] { + let mut channel_id = [0; 32]; + fill_bytes(&mut channel_id); + for i in 0..4 { + // byteswap the u64s in channel_id to make it distinct from get_session_key (and match + // old code that wrote out different endianness). + let mut t; + t = channel_id[i*8 + 0]; + channel_id[i*8 + 0] = channel_id[i*8 + 7]; + channel_id[i*8 + 7] = t; + t = channel_id[i*8 + 1]; + channel_id[i*8 + 1] = channel_id[i*8 + 6]; + channel_id[i*8 + 6] = t; + t = channel_id[i*8 + 2]; + channel_id[i*8 + 2] = channel_id[i*8 + 5]; + channel_id[i*8 + 5] = t; + t = channel_id[i*8 + 3]; + channel_id[i*8 + 3] = channel_id[i*8 + 4]; + channel_id[i*8 + 4] = t; + } + channel_id + } } #[inline] @@ -428,7 +451,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { // fulfill this HTLC, but if they are, we can just take the first byte and // place that anywhere in our preimage. if &payment.0[1..] != &[0; 31] { - channelmanager.fail_htlc_backwards(&payment, 0); + channelmanager.fail_htlc_backwards(&payment); } else { let mut payment_preimage = PaymentPreimage([0; 32]); payment_preimage.0[0] = payment.0[0]; @@ -438,7 +461,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { }, 9 => { for payment in payments_received.drain(..) { - channelmanager.fail_htlc_backwards(&payment, 0); + channelmanager.fail_htlc_backwards(&payment); } }, 10 => { @@ -531,7 +554,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { #[cfg(feature = "afl")] fn main() { fuzz!(|data| { - let logger: Arc = Arc::new(test_logger::TestLogger{}); + let logger: Arc = Arc::new(test_logger::TestLogger::new("".to_owned())); do_test(data, &logger); }); } @@ -542,7 +565,7 @@ fn main() { fn main() { loop { fuzz!(|data| { - let logger: Arc = Arc::new(test_logger::TestLogger{}); + let logger: Arc = Arc::new(test_logger::TestLogger::new("".to_owned())); do_test(data, &logger); }); } @@ -552,7 +575,7 @@ fn main() { #[macro_use] extern crate libfuzzer_sys; #[cfg(feature = "libfuzzer_fuzz")] fuzz_target!(|data: &[u8]| { - let logger: Arc = Arc::new(test_logger::TestLogger{}); + let logger: Arc = Arc::new(test_logger::TestLogger::new("".to_owned())); do_test(data, &logger); }); @@ -566,7 +589,7 @@ mod tests { #[test] fn duplicate_crash() { - let logger: Arc = Arc::new(test_logger::TestLogger{}); + let logger: Arc = Arc::new(test_logger::TestLogger::new("".to_owned())); super::do_test(&::hex::decode("00").unwrap(), &logger); }