mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
lightningd: EXPERIMENTAL_FEATURES: fix crash caused by test_sendonionmessage
Commit b0c9059602 broke the case where
next_node_id is NULL:
[libsecp256k1] illegal argument: pubkey != NULL
lightning_channeld: FATAL SIGNAL 6 (version 13d9c27)
0x55b4cd261b64 send_backtrace
common/daemon.c:39
0x55b4cd261c0e crashdump
common/daemon.c:52
0x7fc60307746f ???
???:0
0x7fc6030773eb ???
???:0
0x7fc603056898 ???
???:0
0x55b4cd2c7cee ???
???:0
0x55b4cd2d74d4 ???
???:0
0x55b4cd26ac62 node_id_from_pubkey
common/node_id.c:12
0x55b4cd24e194 handle_onion_message
channeld/channeld.c:1890
0x55b4cd24e697 peer_in
channeld/channeld.c:2001
0x55b4cd2521f4 main
channeld/channeld.c:3419
0x7fc6030581e2 ???
???:0
0x55b4cd24881d ???
???:0
0xffffffffffffffff ???
???:0
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
fbfe0e6c0b
commit
75a93ec32f
@@ -1879,7 +1879,7 @@ static void handle_onion_message(struct peer *peer, const u8 *msg)
|
|||||||
path)));
|
path)));
|
||||||
} else {
|
} else {
|
||||||
struct pubkey *next_blinding;
|
struct pubkey *next_blinding;
|
||||||
struct node_id next_node;
|
struct node_id *next_node;
|
||||||
|
|
||||||
/* This *MUST* have instructions on where to go next. */
|
/* This *MUST* have instructions on where to go next. */
|
||||||
if (!om->next_short_channel_id && !om->next_node_id) {
|
if (!om->next_short_channel_id && !om->next_node_id) {
|
||||||
@@ -1888,7 +1888,6 @@ static void handle_onion_message(struct peer *peer, const u8 *msg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
node_id_from_pubkey(&next_node, om->next_node_id);
|
|
||||||
if (blinding_ss) {
|
if (blinding_ss) {
|
||||||
/* E(i-1) = H(E(i) || ss(i)) * E(i) */
|
/* E(i-1) = H(E(i) || ss(i)) * E(i) */
|
||||||
struct sha256 h;
|
struct sha256 h;
|
||||||
@@ -1898,10 +1897,16 @@ static void handle_onion_message(struct peer *peer, const u8 *msg)
|
|||||||
} else
|
} else
|
||||||
next_blinding = NULL;
|
next_blinding = NULL;
|
||||||
|
|
||||||
|
if (om->next_node_id) {
|
||||||
|
next_node = tal(tmpctx, struct node_id);
|
||||||
|
node_id_from_pubkey(next_node, om->next_node_id);
|
||||||
|
} else
|
||||||
|
next_node = NULL;
|
||||||
|
|
||||||
wire_sync_write(MASTER_FD,
|
wire_sync_write(MASTER_FD,
|
||||||
take(towire_got_onionmsg_forward(NULL,
|
take(towire_got_onionmsg_forward(NULL,
|
||||||
om->next_short_channel_id,
|
om->next_short_channel_id,
|
||||||
&next_node,
|
next_node,
|
||||||
next_blinding,
|
next_blinding,
|
||||||
serialize_onionpacket(tmpctx, rs->next))));
|
serialize_onionpacket(tmpctx, rs->next))));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user