aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2018-05-09 17:10:48 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2018-05-09 17:10:53 +0200
commit08c1caf863656e8c4302f0ff392772f0055760e5 (patch)
treeb1e109fb95037574ce5fc07a167fd93b9d5290d1 /src
parent612ba35ab140db917ac6ce6bfbcd0dd4c484f2df (diff)
parenta2f678d3552aaaaa8d6f480cf5f2fbc849f376c3 (diff)
downloadbitcoin-08c1caf863656e8c4302f0ff392772f0055760e5.tar.xz
Merge #13185: Bugfix: the end of a reorged chain is invalid when connect fails
a2f678d Bugfix: the end of a reorged chain is invalid when connect fails (Pieter Wuille) Pull request description: Introduced in 4e0eed88acdd41826868c151373068bfad18b84d When an invalid block is found during a reorg, we know the last of the blocks in the was-to-be-connected chain is invalid, but not necessarily the first. As `vpIndexToConnect` is ordered in decreasing height, the end of the reorg is the front of the vector, and not the back. This only affected the warning system. Tree-SHA512: ddf749f8a78083811a5a17152723f545c1463768d09dc9832ec3682e803a3c106fb768de9fa91c03aa95e644d4e41361a7e4ee791940fd7d51cdefea90de31fc
Diffstat (limited to 'src')
-rw-r--r--src/validation.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/validation.cpp b/src/validation.cpp
index fc1f6477d5..8a941561bb 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -2551,8 +2551,9 @@ bool CChainState::ActivateBestChainStep(CValidationState& state, const CChainPar
if (!ConnectTip(state, chainparams, pindexConnect, pindexConnect == pindexMostWork ? pblock : std::shared_ptr<const CBlock>(), connectTrace, disconnectpool)) {
if (state.IsInvalid()) {
// The block violates a consensus rule.
- if (!state.CorruptionPossible())
- InvalidChainFound(vpindexToConnect.back());
+ if (!state.CorruptionPossible()) {
+ InvalidChainFound(vpindexToConnect.front());
+ }
state = CValidationState();
fInvalidFound = true;
fContinue = false;