Avoid index-out-of-range

Also add sanity assertion
This commit is contained in:
Neil Booth 2015-12-20 12:19:44 +09:00
parent 25a2ceda23
commit 0a3d74de8f
2 changed files with 6 additions and 1 deletions

View File

@ -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)

View File

@ -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)