bitcoin-tx: Reject + sign in nversion parsing

It would be confusing to specify the sign for an unsigned value here, so
reject it.
This commit is contained in:
MarcoFalke 2025-05-15 20:03:25 +02:00
parent fab06ac037
commit dddd9e5fe3
No known key found for this signature in database
2 changed files with 9 additions and 4 deletions

View File

@ -211,12 +211,11 @@ static CAmount ExtractAndValidateValue(const std::string& strValue)
static void MutateTxVersion(CMutableTransaction& tx, const std::string& cmdVal)
{
uint32_t newVersion;
if (!ParseUInt32(cmdVal, &newVersion) || newVersion < 1 || newVersion > TX_MAX_STANDARD_VERSION) {
const auto ver{ToIntegral<uint32_t>(cmdVal)};
if (!ver || *ver < 1 || *ver > TX_MAX_STANDARD_VERSION) {
throw std::runtime_error("Invalid TX version requested: '" + cmdVal + "'");
}
tx.version = newVersion;
tx.version = *ver;
}
static void MutateTxLocktime(CMutableTransaction& tx, const std::string& cmdVal)

View File

@ -56,6 +56,12 @@
"output_cmp": "blanktxv2.json",
"description": "Creates a blank transaction when nothing is piped into bitcoin-tx (output in json)"
},
{ "exec": "./bitcoin-tx",
"args": ["-create", "nversion=+1"],
"return_code": 1,
"error_txt": "error: Invalid TX version requested",
"description": "Tests the check for invalid nversion value"
},
{ "exec": "./bitcoin-tx",
"args": ["-create", "nversion=1foo"],
"return_code": 1,