Browse Source

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.
patch-4
SomberNight 4 years ago
parent
commit
261ad804ca
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 4
      electrum/invoices.py
  2. 3
      electrum/lnutil.py

4
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:

3
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:

Loading…
Cancel
Save