diff --git a/lib/coinchooser.py b/lib/coinchooser.py index 385adf32..4df77a80 100644 --- a/lib/coinchooser.py +++ b/lib/coinchooser.py @@ -67,6 +67,7 @@ class CoinChooserBase(PrintError): amounts = self.change_amounts(tx, len(change_addrs), fee_estimator, dust_threshold) assert min(amounts) >= 0 + assert len(change_addrs) >= len(amounts) # If change is above dust threshold after accounting for the # size of the change output, add it to the transaction. dust = sum(amount for amount in amounts if amount < dust_threshold) diff --git a/lib/wallet.py b/lib/wallet.py index 9717c9a0..c22cb11a 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -26,7 +26,7 @@ import json import copy from functools import partial -from util import PrintError, profiler +from util import NotEnoughFunds, PrintError, profiler from bitcoin import * from account import * @@ -897,6 +897,10 @@ class Abstract_Wallet(PrintError): if type == 'address': assert is_address(data), "Address " + data + " is invalid!" + # Avoid index-out-of-range with coins[0] below + if not coins: + raise NotEnoughFunds() + for item in coins: self.add_input_info(item)