1
0

invoice: fail gracefully with large amount

This commit is contained in:
bitromortac
2021-05-06 15:30:34 +02:00
parent 6ce96306ca
commit 853e912885
4 changed files with 99 additions and 79 deletions

View File

@@ -6,7 +6,7 @@ import attr
from .json_db import StoredObject
from .i18n import _
from .util import age
from .util import age, InvoiceError
from .lnaddr import lndecode, LnAddr
from . import constants
from .bitcoin import COIN, TOTAL_COIN_SUPPLY_LIMIT_IN_BTC
@@ -134,12 +134,12 @@ class OnchainInvoice(Invoice):
def _validate_amount(self, attribute, value):
if isinstance(value, int):
if not (0 <= value <= TOTAL_COIN_SUPPLY_LIMIT_IN_BTC * COIN):
raise ValueError(f"amount is out-of-bounds: {value!r} sat")
raise InvoiceError(f"amount is out-of-bounds: {value!r} sat")
elif isinstance(value, str):
if value != "!":
raise ValueError(f"unexpected amount: {value!r}")
raise InvoiceError(f"unexpected amount: {value!r}")
else:
raise ValueError(f"unexpected amount: {value!r}")
raise InvoiceError(f"unexpected amount: {value!r}")
@classmethod
def from_bip70_payreq(cls, pr: 'PaymentRequest', height:int) -> 'OnchainInvoice':
@@ -173,9 +173,9 @@ class LNInvoice(Invoice):
return
if isinstance(value, int):
if not (0 <= value <= TOTAL_COIN_SUPPLY_LIMIT_IN_BTC * COIN * 1000):
raise ValueError(f"amount is out-of-bounds: {value!r} msat")
raise InvoiceError(f"amount is out-of-bounds: {value!r} msat")
else:
raise ValueError(f"unexpected amount: {value!r}")
raise InvoiceError(f"unexpected amount: {value!r}")
@property
def _lnaddr(self) -> LnAddr:
@@ -231,4 +231,3 @@ class LNInvoice(Invoice):
# 'tags': str(lnaddr.tags),
})
return d