mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-21 14:34:49 +01:00
node: use uint256::FromUserHex for -minimumchainwork parsing
Removes dependency on unsafe and deprecated uint256S. This makes parsing more strict, by returning an error when the input contains more than 64 hex digits.
This commit is contained in:
parent
70e2c87737
commit
8a44d7d3c1
3 changed files with 7 additions and 5 deletions
|
@ -32,10 +32,11 @@ util::Result<void> ApplyArgsManOptions(const ArgsManager& args, ChainstateManage
|
|||
if (auto value{args.GetBoolArg("-checkpoints")}) opts.checkpoints_enabled = *value;
|
||||
|
||||
if (auto value{args.GetArg("-minimumchainwork")}) {
|
||||
if (!IsHexNumber(*value)) {
|
||||
return util::Error{strprintf(Untranslated("Invalid non-hex (%s) minimum chain work value specified"), *value)};
|
||||
if (auto min_work{uint256::FromUserHex(*value)}) {
|
||||
opts.minimum_chain_work = UintToArith256(*min_work);
|
||||
} else {
|
||||
return util::Error{strprintf(Untranslated("Invalid minimum work specified (%s), must be up to %d hex digits"), *value, uint256::size() * 2)};
|
||||
}
|
||||
opts.minimum_chain_work = UintToArith256(uint256S(*value));
|
||||
}
|
||||
|
||||
if (auto value{args.GetArg("-assumevalid")}) opts.assumed_valid_block = uint256S(*value);
|
||||
|
|
|
@ -820,7 +820,8 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_args, BasicTestingSetup)
|
|||
BOOST_CHECK_EQUAL(get_valid_opts({"-nominimumchainwork"}).minimum_chain_work.value().GetCompact(), 0U);
|
||||
BOOST_CHECK_EQUAL(get_valid_opts({"-minimumchainwork=0x1234"}).minimum_chain_work.value().GetCompact(), 0x02123400U);
|
||||
|
||||
BOOST_CHECK(!get_opts({"-minimumchainwork=xyz"})); // invalid hex characters
|
||||
BOOST_CHECK(!get_opts({"-minimumchainwork=xyz"})); // invalid hex characters
|
||||
BOOST_CHECK(!get_opts({"-minimumchainwork=01234567890123456789012345678901234567890123456789012345678901234"})); // > 64 hex chars
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
|
|
@ -110,7 +110,7 @@ class MinimumChainWorkTest(BitcoinTestFramework):
|
|||
self.stop_node(0)
|
||||
self.nodes[0].assert_start_raises_init_error(
|
||||
["-minimumchainwork=test"],
|
||||
expected_msg='Error: Invalid non-hex (test) minimum chain work value specified',
|
||||
expected_msg='Error: Invalid minimum work specified (test), must be up to 64 hex digits',
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue