Send back the actual received amount, not expected on HTLC fails
[rust-lightning] / fuzz / fuzz_targets / full_stack_target.rs
index 067c73d217e2517c4e2f43c03aaad92895d898d7..f0d21937750cde5bce0515a9980eca2510ecb1a9 100644 (file)
@@ -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<Logger>) {
                                        // 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<Logger>) {
                        },
                        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<Logger>) {
 #[cfg(feature = "afl")]
 fn main() {
        fuzz!(|data| {
-               let logger: Arc<Logger> = Arc::new(test_logger::TestLogger{});
+               let logger: Arc<Logger> = 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<Logger> = Arc::new(test_logger::TestLogger{});
+                       let logger: Arc<Logger> = 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<Logger> = Arc::new(test_logger::TestLogger{});
+       let logger: Arc<Logger> = 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<Logger> = Arc::new(test_logger::TestLogger{});
+               let logger: Arc<Logger> = Arc::new(test_logger::TestLogger::new("".to_owned()));
                super::do_test(&::hex::decode("00").unwrap(), &logger);
        }