mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 22:50:59 +01:00
Merge bitcoin/bitcoin#28149: net processing: clamp PeerManager::Options user input
547fa52443net processing: clamp -blockreconstructionextratxn to uint32_t bounds (stickies-v)e451d1e3c6net processing: clamp -maxorphantx to uint32_t bounds (stickies-v)aa89e04e07doc: document PeerManager::Options members (stickies-v) Pull request description: Avoid out-of-bounds user input for `PeerManager::Options` by safely clamping `-maxorphantx` and `-blockreconstructionextratxn`, and avoid platform-specific behaviour by changing `PeerManager::Options::max_extra_txs` from `size_t` to a `uint32_t`. Addresses https://github.com/bitcoin/bitcoin/pull/27499#pullrequestreview-1544114932. Also documents all `PeerManager::Options` members, addressing https://github.com/bitcoin/bitcoin/pull/27499#discussion_r1272302469. ACKs for top commit: dergoegge: Code review ACK547fa52443glozow: reACK547fa52443Tree-SHA512: 042d47b35bb8a7b29ef3dadd4c0c5d26f13a8f174f33687855d603c19f8de0fcbbda94418453331e149885412d4edd5f402d640d938f6d94b4dcf54e2fdbbcc9
This commit is contained in:
@@ -3,6 +3,9 @@
|
||||
#include <common/args.h>
|
||||
#include <net_processing.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
namespace node {
|
||||
|
||||
void ApplyArgsManOptions(const ArgsManager& argsman, PeerManager::Options& options)
|
||||
@@ -10,11 +13,11 @@ void ApplyArgsManOptions(const ArgsManager& argsman, PeerManager::Options& optio
|
||||
if (auto value{argsman.GetBoolArg("-txreconciliation")}) options.reconcile_txs = *value;
|
||||
|
||||
if (auto value{argsman.GetIntArg("-maxorphantx")}) {
|
||||
options.max_orphan_txs = uint32_t(std::max(int64_t{0}, *value));
|
||||
options.max_orphan_txs = uint32_t((std::clamp<int64_t>(*value, 0, std::numeric_limits<uint32_t>::max())));
|
||||
}
|
||||
|
||||
if (auto value{argsman.GetIntArg("-blockreconstructionextratxn")}) {
|
||||
options.max_extra_txs = size_t(std::max(int64_t{0}, *value));
|
||||
options.max_extra_txs = uint32_t((std::clamp<int64_t>(*value, 0, std::numeric_limits<uint32_t>::max())));
|
||||
}
|
||||
|
||||
if (auto value{argsman.GetBoolArg("-capturemessages")}) options.capture_messages = *value;
|
||||
|
||||
Reference in New Issue
Block a user