From: Valentine Wallace Date: Mon, 31 Oct 2022 16:40:06 +0000 (-0400) Subject: OMs: fix panic sending to a two-hop blinded route where we are the intro node X-Git-Tag: v0.0.113~63^2 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=7af02d01748febbe45127e5702c36775c69e326c;hp=--cc;p=rust-lightning OMs: fix panic sending to a two-hop blinded route where we are the intro node --- 7af02d01748febbe45127e5702c36775c69e326c diff --git a/lightning/src/onion_message/functional_tests.rs b/lightning/src/onion_message/functional_tests.rs index 991f0d1c2..81826a62c 100644 --- a/lightning/src/onion_message/functional_tests.rs +++ b/lightning/src/onion_message/functional_tests.rs @@ -174,7 +174,7 @@ fn too_big_packet_error() { fn we_are_intro_node() { // If we are sending straight to a blinded route and we are the introduction node, we need to // advance the blinded route by 1 hop so the second hop is the new introduction node. - let nodes = create_nodes(3); + let mut nodes = create_nodes(3); let test_msg = TestCustomMessage {}; let secp_ctx = Secp256k1::new(); @@ -182,6 +182,12 @@ fn we_are_intro_node() { nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg.clone()), None).unwrap(); pass_along_path(&nodes, None); + + // Try with a two-hop blinded route where we are the introduction node. + let blinded_route = BlindedRoute::new(&[nodes[0].get_node_pk(), nodes[1].get_node_pk()], &*nodes[1].keys_manager, &secp_ctx).unwrap(); + nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg), None).unwrap(); + nodes.remove(2); + pass_along_path(&nodes, None); } #[test] diff --git a/lightning/src/onion_message/messenger.rs b/lightning/src/onion_message/messenger.rs index 4eb0ada38..70a0842c7 100644 --- a/lightning/src/onion_message/messenger.rs +++ b/lightning/src/onion_message/messenger.rs @@ -513,12 +513,8 @@ fn packet_payloads_and_keys