diff options
author | MarcoFalke <falke.marco@gmail.com> | 2022-01-24 16:12:42 +0100 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2022-01-24 16:07:34 +0100 |
commit | faa75fa19335e3e826efa4f2280609a2db34425d (patch) | |
tree | 8a87ccda22353d92fb747fc62f375f96a24a7fe7 /src/bitcoin-tx.cpp | |
parent | e3de7cb9039770e0fd5b8bb8a5cba35c87ae8f00 (diff) |
Avoid unsigned integer overflow in bitcoin-tx
Diffstat (limited to 'src/bitcoin-tx.cpp')
-rw-r--r-- | src/bitcoin-tx.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index edec883264..ace85d86cc 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -433,13 +433,16 @@ static void MutateTxAddOutData(CMutableTransaction& tx, const std::string& strIn if (pos==0) throw std::runtime_error("TX output value not specified"); - if (pos != std::string::npos) { + if (pos == std::string::npos) { + pos = 0; + } else { // Extract and validate VALUE value = ExtractAndValidateValue(strInput.substr(0, pos)); + ++pos; } // extract and validate DATA - std::string strData = strInput.substr(pos + 1, std::string::npos); + const std::string strData{strInput.substr(pos, std::string::npos)}; if (!IsHex(strData)) throw std::runtime_error("invalid TX output data"); |