From 0b241d61ab45b79297211e04da0e05c2cb10dada Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Mon, 24 Apr 2023 09:25:32 +0200 Subject: [PATCH] Prevent an NRE in LNURL In addition to f05a7f9f14e0a2f906c79951a15311085774db85. Fixes #4904. --- BTCPayServer/Controllers/UILNURLController.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BTCPayServer/Controllers/UILNURLController.cs b/BTCPayServer/Controllers/UILNURLController.cs index d72444f27..7ef78ed1a 100644 --- a/BTCPayServer/Controllers/UILNURLController.cs +++ b/BTCPayServer/Controllers/UILNURLController.cs @@ -468,9 +468,10 @@ namespace BTCPayServer lnUrlMetadata ??= new Dictionary(); var pm = i.GetPaymentMethod(pmi); - var paymentMethodDetails = (LNURLPayPaymentMethodDetails)pm.GetPaymentMethodDetails(); + var paymentMethodDetails = pm?.GetPaymentMethodDetails() as LNURLPayPaymentMethodDetails; bool updatePaymentMethodDetails = false; - if (lnUrlMetadata?.TryGetValue("text/identifier", out var lnAddress) is true && lnAddress is not null) + if (lnUrlMetadata?.TryGetValue("text/identifier", out var lnAddress) is true && + lnAddress is not null && paymentMethodDetails is not null) { paymentMethodDetails.ConsumedLightningAddress = lnAddress; updatePaymentMethodDetails = true; @@ -507,7 +508,7 @@ namespace BTCPayServer lnurlRequest.MaxSendable = LightMoney.FromUnit(6.12m, LightMoneyUnit.BTC); lnurlRequest = await _pluginHookService.ApplyFilter("modify-lnurlp-request", lnurlRequest) as LNURLPayRequest; - if (paymentMethodDetails.PayRequest is null) + if (paymentMethodDetails is not null && paymentMethodDetails.PayRequest is null) { paymentMethodDetails.PayRequest = lnurlRequest; updatePaymentMethodDetails = true;