Skip to content

Commit fa6f29d

Browse files
author
MarcoFalke
committed
bitcoin-tx: Reject non-integral and out of range multisig numbers
1 parent fafab8e commit fa6f29d

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/bitcoin-tx.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,10 +363,10 @@ static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::string& s
363363
CAmount value = ExtractAndValidateValue(vStrInputParts[0]);
364364

365365
// Extract REQUIRED
366-
uint32_t required = stoul(vStrInputParts[1]);
366+
const uint32_t required{TrimAndParse<uint32_t>(vStrInputParts.at(1), "invalid multisig required number")};
367367

368368
// Extract NUMKEYS
369-
uint32_t numkeys = stoul(vStrInputParts[2]);
369+
const uint32_t numkeys{TrimAndParse<uint32_t>(vStrInputParts.at(2), "invalid multisig total number")};
370370

371371
// Validate there are the correct number of pubkeys
372372
if (vStrInputParts.size() < numkeys + 3)

test/util/data/bitcoin-util-test.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,18 @@
579579
"output_cmp": "txcreatedata_seq1.json",
580580
"description": "Adds a new input with sequence number to a transaction (output in json)"
581581
},
582+
{ "exec": "./bitcoin-tx",
583+
"args": ["-create", "outmultisig=1:-2:3:02a5:021:02df", "nversion=1"],
584+
"return_code": 1,
585+
"error_txt": "error: invalid multisig required number '-2'",
586+
"description": "Try to parse a multisig number outside the allowed range"
587+
},
588+
{ "exec": "./bitcoin-tx",
589+
"args": ["-create", "outmultisig=1:2:3a:02a5:021:02df", "nversion=1"],
590+
"return_code": 1,
591+
"error_txt": "error: invalid multisig total number '3a'",
592+
"description": "Try to parse a multisig number outside the allowed range"
593+
},
582594
{ "exec": "./bitcoin-tx",
583595
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"],
584596
"output_cmp": "txcreatemultisig1.hex",

0 commit comments

Comments
 (0)