OMs: fix panic sending to a two-hop blinded route where we are the intro node

This commit is contained in:
Valentine Wallace 2022-10-31 12:40:06 -04:00
parent a4e242ba5f
commit 7af02d0174
No known key found for this signature in database
GPG key ID: FD3E106A2CE099B4
2 changed files with 9 additions and 7 deletions

View file

@ -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]

View file

@ -513,12 +513,8 @@ fn packet_payloads_and_keys<T: CustomOnionMessageContents, S: secp256k1::Signing
next_blinding_override: Some(blinding_pt),
})), control_tlvs_ss));
}
if let Some(encrypted_payload) = enc_payload_opt {
payloads.push((Payload::Forward(ForwardControlTlvs::Blinded(encrypted_payload)),
control_tlvs_ss));
} else { debug_assert!(false); }
blinded_path_idx += 1;
} else if blinded_path_idx < num_blinded_hops - 1 && enc_payload_opt.is_some() {
}
if blinded_path_idx < num_blinded_hops.saturating_sub(1) && enc_payload_opt.is_some() {
payloads.push((Payload::Forward(ForwardControlTlvs::Blinded(enc_payload_opt.unwrap())),
control_tlvs_ss));
blinded_path_idx += 1;