aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpracticalswift <practicalswift@users.noreply.github.com>2017-10-30 14:28:19 +0100
committerMarcoFalke <falke.marco@gmail.com>2017-11-02 13:20:18 -0400
commitec8dedff4683220cb30b69df7f987546536565ab (patch)
tree7f1a9b70ea2cf5d87493dec9af543fe2d0d803c5
parent59b210d9a7fec79afba07d2ea90b190ce1d74209 (diff)
downloadbitcoin-ec8dedff4683220cb30b69df7f987546536565ab.tar.xz
net: Add missing lock in ProcessHeadersMessage(...)
Reading the variable mapBlockIndex requires holding the mutex cs_main. The new "Disconnect outbound peers relaying invalid headers" code added in commit 37886d5e2f9992678dea4b1bd893f4f10d61d3ad and merged as part of #11568 two days ago did not lock cs_main prior to accessing mapBlockIndex. Github-Pull: #11578 Rebased-From: 2530bf27b72e53cc6ffec27de35f3b487984833d
-rw-r--r--src/net_processing.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index f677915de1..69db5d7428 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -1250,8 +1250,8 @@ bool static ProcessHeadersMessage(CNode *pfrom, CConnman *connman, const std::ve
if (!ProcessNewBlockHeaders(headers, state, chainparams, &pindexLast, &first_invalid_header)) {
int nDoS;
if (state.IsInvalid(nDoS)) {
+ LOCK(cs_main);
if (nDoS > 0) {
- LOCK(cs_main);
Misbehaving(pfrom->GetId(), nDoS);
}
if (punish_duplicate_invalid && mapBlockIndex.find(first_invalid_header.GetHash()) != mapBlockIndex.end()) {