diff options
author | Vasil Dimov <vd@FreeBSD.org> | 2020-03-18 12:58:22 +0100 |
---|---|---|
committer | Vasil Dimov <vd@FreeBSD.org> | 2020-03-18 13:03:26 +0100 |
commit | 7d8e1dec3b26074df1533f715871f79c956cc224 (patch) | |
tree | 3713688114d74c0520c2ea22e0fc35767664099c /src/net_processing.cpp | |
parent | ce87d5613a5537b68cf23e7bc25c1e3770704ff9 (diff) |
net: fix use-after-free in tests
In PeerLogicValidation::PeerLogicValidation() we would schedule a lambda
function to execute later, capturing the local variable
`consensusParams` by reference.
Presumably this was considered safe because `consensusParams` is a
reference itself to a global variable which is not supposed to change,
but it can in tests.
Fixes https://github.com/bitcoin/bitcoin/issues/18372
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r-- | src/net_processing.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 9cbc02e55b..8ce885d26c 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1127,7 +1127,7 @@ PeerLogicValidation::PeerLogicValidation(CConnman* connmanIn, BanMan* banman, CS // combine them in one function and schedule at the quicker (peer-eviction) // timer. static_assert(EXTRA_PEER_CHECK_INTERVAL < STALE_CHECK_INTERVAL, "peer eviction timer should be less than stale tip check timer"); - scheduler.scheduleEvery([&] { this->CheckForStaleTipAndEvictPeers(consensusParams); }, std::chrono::seconds{EXTRA_PEER_CHECK_INTERVAL}); + scheduler.scheduleEvery([this, consensusParams] { this->CheckForStaleTipAndEvictPeers(consensusParams); }, std::chrono::seconds{EXTRA_PEER_CHECK_INTERVAL}); } /** |