From 6841fceabc380301a2a85d616aea491bf7ee3de5 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Fri, 2 Jun 2017 15:32:42 +0200 Subject: [PATCH] Transaction.getFee(): Do not determine fee on incomplete transactions. --- core/src/main/java/org/bitcoinj/core/Transaction.java | 2 ++ core/src/test/java/org/bitcoinj/wallet/WalletTest.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/bitcoinj/core/Transaction.java b/core/src/main/java/org/bitcoinj/core/Transaction.java index 57b34f53..f0f89f28 100644 --- a/core/src/main/java/org/bitcoinj/core/Transaction.java +++ b/core/src/main/java/org/bitcoinj/core/Transaction.java @@ -415,6 +415,8 @@ public class Transaction extends ChildMessage { */ public Coin getFee() { Coin fee = Coin.ZERO; + if (inputs.isEmpty() || outputs.isEmpty()) // Incomplete transaction + return null; for (TransactionInput input : inputs) { if (input.getValue() == null) return null; diff --git a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java index f699c9ae..f7780878 100644 --- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java @@ -2865,8 +2865,8 @@ public class WalletTest extends TestWithWallet { wallet.receiveFromBlock(tx, block, AbstractBlockChain.NewBlockType.BEST_CHAIN, 0); try { request = SendRequest.emptyWallet(OTHER_ADDRESS); - assertEquals(ZERO, request.tx.getFee()); wallet.completeTx(request); + assertEquals(ZERO, request.tx.getFee()); fail(); } catch (Wallet.CouldNotAdjustDownwards e) {} }