diff options
author | stickies-v <stickies-v@protonmail.com> | 2024-07-26 15:10:25 +0100 |
---|---|---|
committer | stickies-v <stickies-v@protonmail.com> | 2024-08-23 13:53:40 +0100 |
commit | 6819e5a329c3bf38e47a07434e2a3c0031f808d0 (patch) | |
tree | 30354ace52e552a04ed5ce2f482185b7c730a17b /src/node | |
parent | 2e58fdb544b538dba9823bcd5754d074272bfc04 (diff) | |
download | bitcoin-6819e5a329c3bf38e47a07434e2a3c0031f808d0.tar.xz |
node: use uint256::FromUserHex for -assumevalid parsing
Removes dependency on unsafe and deprecated uint256S.
This makes parsing more strict, by returning an error
when the input contains non-hex characters, or when it
contains more than 64 hex digits.
Also make feature_assumevalid.py more robust by using CBlock.hash
which is guaranteed to be 64 characters long, as opposed to the
variable-length hex(CBlock.sha256)
Diffstat (limited to 'src/node')
-rw-r--r-- | src/node/chainstatemanager_args.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/node/chainstatemanager_args.cpp b/src/node/chainstatemanager_args.cpp index 129d51c404..b86d0b2991 100644 --- a/src/node/chainstatemanager_args.cpp +++ b/src/node/chainstatemanager_args.cpp @@ -39,7 +39,13 @@ util::Result<void> ApplyArgsManOptions(const ArgsManager& args, ChainstateManage } } - if (auto value{args.GetArg("-assumevalid")}) opts.assumed_valid_block = uint256S(*value); + if (auto value{args.GetArg("-assumevalid")}) { + if (auto block_hash{uint256::FromUserHex(*value)}) { + opts.assumed_valid_block = *block_hash; + } else { + return util::Error{strprintf(Untranslated("Invalid assumevalid block hash specified (%s), must be up to %d hex digits (or 0 to disable)"), *value, uint256::size() * 2)}; + } + } if (auto value{args.GetIntArg("-maxtipage")}) opts.max_tip_age = std::chrono::seconds{*value}; |