commit 261ad804cad9c8a4f9dbc6595727a35cadc0204e
parent 9d2ede8796f4b9c460d50cd7dfc0a85a0de50b6d
Author: SomberNight <somber.night@protonmail.com>
Date: Fri, 11 Sep 2020 19:56:04 +0200
invoices: always validate that LNInvoice.invoice can be decoded
related: #6559
The LNInvoice.from_json() method previously did not validate, which is
used by e.g. wallet.import_invoices.
Diffstat:
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/electrum/invoices.py b/electrum/invoices.py
@@ -149,6 +149,10 @@ class LNInvoice(Invoice):
__lnaddr = None
+ @invoice.validator
+ def check(self, attribute, value):
+ lndecode(value) # this checks the str can be decoded
+
@property
def _lnaddr(self) -> LnAddr:
if self.__lnaddr is None:
diff --git a/electrum/lnutil.py b/electrum/lnutil.py
@@ -1036,7 +1036,8 @@ def validate_features(features: int) -> None:
if (1 << fbit) & LN_FEATURES_IMPLEMENTED == 0 and fbit % 2 == 0:
raise UnknownEvenFeatureBits(fbit)
if not features.validate_transitive_dependecies():
- raise IncompatibleOrInsaneFeatures("not all transitive dependencies are set")
+ raise IncompatibleOrInsaneFeatures(f"not all transitive dependencies are set. "
+ f"features={features}")
def derive_payment_secret_from_payment_preimage(payment_preimage: bytes) -> bytes: