From 5a04dc185c5f0c3df31bfba4dc1dda64e7e94eed Mon Sep 17 00:00:00 2001 From: niftynei Date: Wed, 21 Apr 2021 15:46:32 -0500 Subject: [PATCH] openchannel2/rbf hooks: reject if response malformed You gotta send over an amount if you send a psbt! --- lightningd/dual_open_control.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lightningd/dual_open_control.c b/lightningd/dual_open_control.c index f6868881b..6663a1a31 100644 --- a/lightningd/dual_open_control.c +++ b/lightningd/dual_open_control.c @@ -622,6 +622,10 @@ rbf_channel_hook_deserialize(struct rbf_channel_payload *payload, "our_funding_msat", &payload->our_funding)) fatal("Plugin failed to supply our_funding_msat field"); + if (payload->psbt + && amount_sat_eq(payload->our_funding, AMOUNT_SAT(0))) + fatal("Plugin failed to supply our_funding_msat field"); + if (!payload->psbt && !amount_sat_eq(payload->our_funding, AMOUNT_SAT(0))) { @@ -782,8 +786,12 @@ openchannel2_hook_deserialize(struct openchannel2_payload *payload, &payload->accepter_funding)) fatal("Plugin failed to supply our_funding_msat field"); - if (!payload->psbt && - !amount_sat_eq(payload->accepter_funding, AMOUNT_SAT(0))) { + if (payload->psbt + && amount_sat_eq(payload->accepter_funding, AMOUNT_SAT(0))) + fatal("Plugin failed to supply our_funding_msat field"); + + if (!payload->psbt + && !amount_sat_eq(payload->accepter_funding, AMOUNT_SAT(0))) { /* Gotta give a PSBT if you set the accepter_funding amount */ /* Let dualopend know we've failed */ payload->err_msg = "Client error. Unable to continue";