URI: 
       tinvoices: always validate that LNInvoice.invoice can be decoded - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 261ad804cad9c8a4f9dbc6595727a35cadc0204e
   DIR parent 9d2ede8796f4b9c460d50cd7dfc0a85a0de50b6d
  HTML 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:
         M electrum/invoices.py                |       4 ++++
         M electrum/lnutil.py                  |       3 ++-
       
       2 files changed, 6 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/electrum/invoices.py b/electrum/invoices.py
       t@@ -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:
   DIR diff --git a/electrum/lnutil.py b/electrum/lnutil.py
       t@@ -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: