aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/release-notes/release-notes-0.16.3.md88
-rw-r--r--src/validation.cpp2
-rwxr-xr-xtest/functional/p2p_invalid_block.py10
3 files changed, 99 insertions, 1 deletions
diff --git a/doc/release-notes/release-notes-0.16.3.md b/doc/release-notes/release-notes-0.16.3.md
new file mode 100644
index 0000000000..2e52d309c2
--- /dev/null
+++ b/doc/release-notes/release-notes-0.16.3.md
@@ -0,0 +1,88 @@
+Bitcoin Core version 0.16.3 is now available from:
+
+ <https://bitcoincore.org/bin/bitcoin-core-0.16.3/>
+
+This is a new minor version release, with various bugfixes.
+
+Please report bugs using the issue tracker at GitHub:
+
+ <https://github.com/bitcoin/bitcoin/issues>
+
+To receive security and update notifications, please subscribe to:
+
+ <https://bitcoincore.org/en/list/announcements/join/>
+
+How to Upgrade
+==============
+
+If you are running an older version, shut it down. Wait until it has completely
+shut down (which might take a few minutes for older versions), then run the
+installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
+or `bitcoind`/`bitcoin-qt` (on Linux).
+
+The first time you run version 0.15.0 or newer, your chainstate database will be converted to a
+new format, which will take anywhere from a few minutes to half an hour,
+depending on the speed of your machine.
+
+Note that the block database format also changed in version 0.8.0 and there is no
+automatic upgrade code from before version 0.8 to version 0.15.0 or higher. Upgrading
+directly from 0.7.x and earlier without re-downloading the blockchain is not supported.
+However, as usual, old wallet versions are still supported.
+
+Downgrading warning
+-------------------
+
+Wallets created in 0.16 and later are not compatible with versions prior to 0.16
+and will not work if you try to use newly created wallets in older versions. Existing
+wallets that were created with older versions are not affected by this.
+
+Compatibility
+==============
+
+Bitcoin Core is extensively tested on multiple operating systems using
+the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
+
+Bitcoin Core should also work on most other Unix-like systems but is not
+frequently tested on them.
+
+Notable changes
+===============
+
+Denial-of-Service vulnerability
+-------------------------------
+
+A denial-of-service vulnerability (CVE-2018-17144) exploitable by miners has
+been discovered in Bitcoin Core versions 0.14.0 up to 0.16.2. It is recommended
+to upgrade any of the vulnerable versions to 0.16.3 as soon as possible.
+
+0.16.3 change log
+------------------
+
+### Consensus
+- #14249 `696b936` Fix crash bug with duplicate inputs within a transaction (TheBlueMatt, sdaftuar)
+
+### RPC and other APIs
+- #13547 `212ef1f` Make `signrawtransaction*` give an error when amount is needed but missing (ajtowns)
+
+### Miscellaneous
+- #13655 `1cdbea7` bitcoinconsensus: invalid flags error should be set to `bitcoinconsensus_err` (afk11)
+
+### Documentation
+- #13844 `11b9dbb` correct the help output for -prune (hebasto)
+
+Credits
+=======
+
+Thanks to everyone who directly contributed to this release:
+
+- Anthony Towns
+- Hennadii Stepanov
+- Matt Corallo
+- Suhas Daftuar
+- Thomas Kerin
+- Wladimir J. van der Laan
+
+And to those that reported security issues:
+
+- (anonymous reporter)
+
diff --git a/src/validation.cpp b/src/validation.cpp
index 947192be0e..59c3fb425f 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -3122,7 +3122,7 @@ bool CheckBlock(const CBlock& block, CValidationState& state, const Consensus::P
// Check transactions
for (const auto& tx : block.vtx)
- if (!CheckTransaction(*tx, state, false))
+ if (!CheckTransaction(*tx, state, true))
return state.Invalid(false, state.GetRejectCode(), state.GetRejectReason(),
strprintf("Transaction check failed (tx hash %s) %s", tx->GetHash().ToString(), state.GetDebugMessage()));
diff --git a/test/functional/p2p_invalid_block.py b/test/functional/p2p_invalid_block.py
index 7be7c9b3ee..0678b1a651 100755
--- a/test/functional/p2p_invalid_block.py
+++ b/test/functional/p2p_invalid_block.py
@@ -81,6 +81,16 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
node.p2p.send_blocks_and_test([block2], node, success=False, request_block=False, reject_reason='bad-txns-duplicate')
+ # Check transactions for duplicate inputs
+ self.log.info("Test duplicate input block.")
+
+ block2_orig.vtx[2].vin.append(block2_orig.vtx[2].vin[0])
+ block2_orig.vtx[2].rehash()
+ block2_orig.hashMerkleRoot = block2_orig.calc_merkle_root()
+ block2_orig.rehash()
+ block2_orig.solve()
+ node.p2p.send_blocks_and_test([block2_orig], node, success=False, request_block=False, reject_reason='bad-txns-inputs-duplicate')
+
self.log.info("Test very broken block.")
block3 = create_block(tip, create_coinbase(height), block_time)